Удаляйте файлы/папки в Python, используя os и Shutil, а также pathlib.

В этой статье мы увидим, как можно использовать библиотеки os , pathlib и Shutil для удаления файлов и каталогов на компьютере.

Удаление файлов:

1.os.remove(file_path)

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

В Windows файл нельзя удалить, пока он не используется другим приложением. С другой стороны, в Linux файловый объект удаляется, но данные на диске не стираются до тех пор, пока использующее его приложение не снимет блокировку.

Выброшены ошибки:

  • IsADirectoryError
  • FileNotFoundError

Пример:

import os
os.remove("/home/user/Documents/notes.txt")

 

2.pathlib.Path.unlink(missing_ok=False)

Удаляет файл или символическую ссылку . Если  missing_ok True, FileNotFoundError будет скрыт. В системах на базе Linux символические ссылки могут иметь то же имя, что и целевой файл, тогда как в Windows ярлыки имеют расширение .lnk.

Выброшены ошибки:

  • FileNotFoundError

Примеры:

import pathlib

path = pathlib.Path("/home/user/Desktop/sample_pdf.pdf")
path.unlink()

 

Удаление папок:

3.os.rmdir(directory_path)

Работа этой функции аналогична rmdir в Linux.  directory_path должен быть объектом, подобным пути python. Если каталог, указанный в пути, не пуст, будет вызвана ошибка, подразумевающая, что можно удалить только пустые каталоги.

Выброшены ошибки:

  • FileNotFoundError
  • OSError

Пример:

import os
os.rmdir("/home/user/Desktop/Images") 

 

4.pathlib.Path.rmdir()

pathlib  Path.rmdir() является альтернативой  os.rmdir(). Под капотом pathlib расширяет  os.rmdir() функциональность. Удаляемый каталог должен быть пустым.

Выброшены ошибки:

  • FileNotFoundError
  • OSError

Пример:

import pathlib

path = pathlib.Path("/home/user/Desktop/Images") # create a path object first, rmdir() does not take any arguments
path.rmdir() 

 

5.shutil.rmtree(directory_path)

Shutil связан с файловыми операциями, а также включает функцию, которую можно использовать для рекурсивного удаления каталога и всего его содержимого. Это похоже на команду Linux rm -rfУказанный путь к каталогу не должен быть символической ссылкой .

Выброшены ошибки:

  • FileNotFoundError
  • NotADirectoryError

Пример:

import shutil
shutil.rmdir("/home/user/Desktop/Images")

 


5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии