Видалити каталог або файл за допомогою Python

Видалити каталог або файл за допомогою Python

У цій статті ми розповімо, як видалити (видалити) файли та каталоги в Python. Python надає різні методи та функції для видалення файлів і каталогів. Можна видалити файл відповідно до їх потреб.

Різноманітні методи, надані Python:

Видалення файлу/каталогу за допомогою методу os.remove().

Модуль ОС у Python надає функції для взаємодії з операційною системою. Усі функції в модулі OS піднімаються OSError у разі недійсних або недоступних імен файлів і шляхів або інших аргументів, які мають правильний тип, але не приймаються операційною системою.



метод os.remove() у Python використовується для видалення або видалення шляху до файлу. Цей метод не може видалити або видалити каталог . Якщо вказаний шлях є каталогом, то OSError буде викликано методом.

Синтаксис os.remove()

Синтаксис: os.remove(шлях, *, dir_fd = немає)

Параметр: шлях: Шляховий об’єкт, що представляє шлях до файлу. Об’єкт, подібний до шляху, — це рядковий або байтовий об’єкт, що представляє шлях.

    dir_fd (необов'язково): дескриптор файлу, що посилається на каталог. Значення цього параметра за замовчуванням - None. Якщо вказаний шлях є абсолютним, тоді dir_fd ігнорується.

Примітка: «*» у списку параметрів вказує на те, що всі наступні параметри (тут у нашому випадку «dir_fd») є параметрами лише за ключовими словами, і їх можна надати за допомогою їх імені, а не як позиційний параметр.

Тип повернення: Цей метод не повертає жодного значення.

Приклад 1: видалення файлу в Python

Припустимо, файли, що містяться в папці:

Ми хочемо видалити файл 1 із зазначеної вище папки. Нижче наведено реалізацію.

Python3




# Python program to explain os.remove() method> # importing os module> import> os> # File name> file> => 'file1.txt'> # File location> location> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil/'> # Path> path> => os.path.join(location,> file> )> # Remove the file> # 'file.txt'> os.remove(path)>

Вихід:

Приклад 2: видалення файлу з абсолютним шляхом

Якщо вказаний шлях є каталогом.

Python3




# Python program to explain os.remove() method> # importing os module> import> os> # Directory name> dir> => 'Nikhil'> # Path> location> => 'D:/Pycharm projects/techcodeview.com/Authors/'> path> => os.path.join(location,> dir> )> # Remove the specified> # file path> os.remove(path)> print> (> '% s has been removed successfully'> %> dir> )> # if the specified path> # is a directory then> # 'IsADirectoryError' error> # will raised> # Similarly if the specified> # file path does not exists or> # is invalid then corresponding> # OSError will be raised>

Вихід:

Traceback (most recent call last): File 'osremove.py', line 11, in os.remove(path) IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' 

приклад 3: Перед видаленням перевірте, чи файл існує

Помилка обробки під час використання методу os.remove().

Python3




# Python program to explain os.remove() method> # importing os module> import> os> # path> path> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'> # Remove the specified> # file path> try> :> > os.remove(path)> > print> (> '% s removed successfully'> %> path)> except> OSError as error:> > print> (error)> > print> (> 'File path can not be removed'> )>

Вихід:

[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed 

Примітка: Щоб дізнатися більше про os.remove(), натисніть тут.

Видалення файлу/каталогу за допомогою методу os.rmdir().

Метод os.rmdir() у Python використовується для видалення або видалення порожнього каталогу. Помилка операційної системи буде викликано, якщо вказаний шлях не є порожнім каталогом.

Синтаксис os.rmdir()

Синтаксис: os.rmdir(шлях, *, dir_fd = немає)

Параметр:

    шлях: об’єкт, схожий на шлях, що представляє шлях до файлу. Об’єкт, подібний до шляху, — це рядковий або байтовий об’єкт, що представляє шлях. dir_fd (необов'язково): дескриптор файлу, що посилається на каталог. Значення цього параметра за замовчуванням - None. Якщо вказаний шлях є абсолютним, тоді dir_fd ігнорується.

Примітка: «*» у списку параметрів вказує на те, що всі наступні параметри (тут у нашому випадку «dir_fd») є параметрами лише за ключовими словами, і їх можна надати за допомогою їх імені, а не як позиційний параметр.

Тип повернення: Цей метод не повертає жодного значення.

Приклад 1: Видалити всі каталоги з каталогу

Припустімо, що каталоги –

Ми хочемо видалити каталог Geeks. Нижче наведено реалізацію.

Python3




# importing os module> import> os> # Directory name> directory> => 'Geeks'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'Geeks'> os.rmdir(path)>

Вихід:

Приклад 2: Обробка помилок під час видалення каталогу

Обробка помилок під час використання методу os.rmdir(),

Python3




# Python program to explain os.rmdir() method> # importing os module> import> os> # Directory name> directory> => 'techcodeview.com'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'techcodeview.com'> try> :> > os.rmdir(path)> > print> (> 'Directory '% s' has been removed successfully'> %> directory)> except> OSError as error:> > print> (error)> > print> (> 'Directory '% s' can not be removed'> %> directory)> # if the specified path> # is not an empty directory> # then permission error will> # be raised> # similarly if specified path> # is invalid or is not a> # directory then corresponding> # OSError will be raised>

Вихід:

[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed 

Примітка: Щоб дізнатися більше про os.rmdir(), натисніть тут.

Видалення файлу/каталогу за допомогою shutil.rmtree()

shutil.rmtree() використовується для видалення цілого дерева каталогів, шлях має вказувати на каталог (але не символічне посилання на каталог).

Syntax of shutil.rmtree()

Синтаксис: shutil.rmtree(шлях, ignore_errors=False, onerror=None)

Параметри:

    шлях: об’єкт, схожий на шлях, що представляє шлях до файлу. Об’єкт, подібний до шляху, — це рядковий або байтовий об’єкт, що представляє шлях. ignore_errors: якщо ignore_errors має значення true, помилки, що виникли внаслідок невдалого видалення, ігноруватимуться. onerror: якщо ignore_errors має значення false або пропущено, такі помилки обробляються шляхом виклику обробника, визначеного onerror.

Видалити каталог і файли, що містяться в ньому.

Приклад 1:

Припустимо, що каталог і підкаталоги є такими.

# Батьківський каталог:

# Каталог всередині батьківського каталогу:

# Файл у підкаталозі:

Приклад: видалити всі файли з каталогу

Ми хочемо видалити каталог Автори. Нижче наведено реалізацію.

Python3




# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path)>

Вихід:

Приклад 2: помилка ігнорування під час видалення каталогу

Передаючи ignore_errors = True.

Python3




# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, ignore_errors> => False> )> # making ignore_errors = True will not raise> # a FileNotFoundError>

Вихід:

Traceback (останній останній виклик): файл D:/Pycharm projects/gfg/gfg.py, рядок 16, у shutil.rmtree(path, ignore_errors=False) файл C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, рядок 730, у rmtree повертає _rmtree_unsafe(path, onerror) Файл C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , рядок 589, у _rmtree_unsafe onerror(os.scandir, шлях, sys.exc_info()) Файл C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, рядок 586, у _rmtree_unsafe з os.scandir(path) як scandir_it: FileNotFoundError: [WinError 3] Система не може знайти вказаний шлях: 'D:/Pycharm projects/techcodeview.com/Authors'

Приклад 3: обробник винятків

У onerror повинна бути передана функція, яка повинна містити три параметри.

    функція – функція, яка викликала виняток. шлях – передана назва шляху, яка викликала виняток під час видалення excinfo – інформація про виняток, викликана sys.exc_info()

Нижче наведено реалізацію

Python3




# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # exception handler> def> handler(func, path, exc_info):> > print> (> 'Inside handler'> )> > print> (exc_info)> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, onerror> => handler)>

Вихід:

Внутрішній обробник (, FileNotFoundError(2, «Система не може знайти вказаний шлях»), ) Внутрішній обробник (, FileNotFoundError(2, «Система не може знайти вказаний файл»), )

Видалення файлу/каталогу за допомогою pathlib.Path(empty_dir_path).rmdir()

Порожній каталог також можна вилучити або видалити за допомогою методу rmdir() модуля pathlib. Спочатку ми повинні встановити шлях до каталогу, а потім викликати метод rmdir() на цьому шляху

Синтаксис pathlib.Path

Синтаксис: pathlib.Path(empty_dir_path).rmdir()

Параметр:

    empty_dir_path: об’єкт, схожий на шлях, що представляє порожній шлях до каталогу. Об’єкт, подібний до шляху, — це рядковий або байтовий об’єкт, що представляє шлях.

Тип повернення: Цей метод не повертає жодного значення.

Приклад: видалення порожнього каталогу за допомогою rmdir()

У цьому прикладі ми видалимо порожню папку, нам просто потрібно вказати назву папки, якщо вона знаходиться в кореневому каталозі

Python3




import> pathlib> # Deleting an empty folder> # Put your file address> empty_dir> => r> 'Untitled Folder'> path> => pathlib.Path(empty_dir).rmdir()> print> (> 'Deleted '%s' successfully'> %> empty_dir)>

Вихід:

Deleted 'Untitled Folder' successfully 


Кращі Статті

Категорія

Цікаві Статті