Видалити каталог або файл за допомогою Python
У цій статті ми розповімо, як видалити (видалити) файли та каталоги в Python. Python надає різні методи та функції для видалення файлів і каталогів. Можна видалити файл відповідно до їх потреб.
Різноманітні методи, надані Python:
- Використання os.remove()
- Використання os.rmdir()
- Using shutil.rmtree()
- Використання pathlib.Path(empty_dir_path).rmdir()
Видалення файлу/каталогу за допомогою методу 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