Рубрики

Python | метод os.removedirs ()

Модуль ОС в Python предоставляет функции для взаимодействия с операционной системой. ОС поставляется под стандартные служебные модули Python. Этот модуль предоставляет портативный способ использования функциональных возможностей, зависящих от операционной системы.

Все функции в модуле os вызывают OSError в случае недопустимых или недоступных имен и путей к файлам или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.

os.removedirs() в Python используется для рекурсивного удаления каталогов. Если os.removedirs() каталог по указанному пути успешно удален, то os.removedirs() пытается последовательно удалить каждый родительский каталог, указанный в пути, до появления ошибки. Возникшая ошибка игнорируется, поскольку обычно возникает ошибка, поскольку каталог, который нужно удалить, не является пустым.
Например, рассмотрим следующий путь:

'/home/User/Documents/foo/bar/baz'

В указанном выше пути метод os.removedirs() попытается сначала удалить os.removedirs() каталог, т.е. «baz» . Если конечный каталог 'baz' успешно удален, то метод попытается удалить '/ home / User / Documents / foo / bar' затем '/ home / User / Documents / foo /' then '/ home / User / Documents' до ошибка возникает. Каталог для удаления должен быть пустым.

Syntax: os.removedirs(path)

Parameter:
path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.

Return Type: This method does not return any value.

Код № 1: Использование метода os.removedirs () для удаления пустого дерева каталогов

# Python программа для объяснения метода os.removedirs ()

    
# импорт модуля os

import os

  
# Имя каталога

directory = "baz"

  
# Родительский каталог

parent = "/home/User/Documents/foo/bar"

  
# Путь

path = os.path.join(parent, directory)

  
# Удалить каталог
# "Баз"
os.removedirs(path)

print("Directory '%s' has been removed successfully" %directory)

  
# Весь родительский каталог
# из 'baz' также будет
# удаляется, если они пусты

  

Выход:

Directory 'baz' has been removed successfully

Код № 2: Возможные ошибки при использовании метода os.removedirs ()

# Python программа для объяснения метода os.removedirs ()

    
# импорт модуля os

import os

  

  
# Если указан путь
# не является каталогом
# затем 'NotADirectoryError'
# будет сгенерировано исключение

  
# Если указан путь
# не пустой каталог
# затем 'OSError'
# будет поднят

  
# Если есть
# разрешение вопроса при
# удаление каталога
# тогда 'PermissionError'
# будет сгенерировано исключение

  

  
# аналогично, если указан путь
# недопустимо 'OSError'
# будет поднят

  
# Путь

path = '/home/User/Documents/ihritik/file.txt'

  
# Попробуйте удалить
# указанный путь
os.removedirs(path) 

Выход:

Traceback (most recent call last):
  File "removedirs.py", line 33, in 
    os.removedirs(path)
  File "/usr/lib/python3.6/os.py", line 238, in removedirs
    rmdir(name)
NotADirectoryError: [Errno 20] Not a directory: '/home/User/Documents/ihritik/file.txt'

Код № 3: Обработка ошибок при использовании метода os.removedirs ()

# Python программа для объяснения метода os.removedirs ()

    
# импорт модуля os

import os

  
# Путь

path = '/home/User/Documents/ihritik/file.txt'

  
# Попробуйте удалить
# указанный путь

  

try:

    os.removedirs(path)

    print("Director removed successfully")

  
# Если путь не является каталогом

except NotADirectoryError:

    print("Specified path is not a directory.")

  
# Если разрешение связано с ошибками

except PermissionError:

    print("Permission denied.")

  
# для других ошибок

except OSError as error:

    print(error)

    print("Directory can not be removed")

Выход:

Specified path is not a directory.

Ссылка: https://docs.python.org/3/library/os.html

Рекомендуемые посты:

Python | метод os.removedirs ()

0.00 (0%) 0 votes