В Python есть несколько встроенных модулей, которые позволяют удалять файлы и каталоги.
В этой статье объясняется, как удалять файлы и каталоги, используя функцию из модуля os, pathlib и shutil.
В Python вы можете использовать os.remove(), os.unlink(), pathlib.Path.unlink() чтобы удалить один файл.
Модуль os обеспечивает переносимый способ взаимодействия с операционной системой. Модуль доступен для Python 2 и 3.
Чтобы удалить один файл с помощью os.remove(), передайте путь к файлу в качестве аргумента:
import os file_path = '/tmp/file.txt' os.remove(file_path)
Функции os.remove() и os.unlink() семантически идентичны:
import os file_path = '/tmp/file.txt' os.unlink(file_path)
Если указанный файл не существует, выдается ошибка FileNotFoundError. Оба os.remove() и os.unlink() могут удалять только файлы, а не каталоги. Если указанный путь указывает на каталог, он выдаст ошибку IsADirectoryError.
Для удаления файла требуется разрешение на запись и выполнение в каталоге, в котором находится файл. В противном случае вы получите ошибку PermissionError.
Чтобы избежать ошибок при удалении файлов, вы можете использовать обработку исключений, чтобы перехватить исключение и отправить правильное сообщение об ошибке:
import os file_path = '/tmp/file.txt' try: os.remove(file_path) except OSError as e: print("Ошибка: %s : %s" % (file_path, e.strerror))
Модуль pathlib доступен в Python 3.4 и выше. Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip. pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для разных операционных систем.
Чтобы удалить файл с модулем pathlib, создайте объект Path, указывающий на файл, и вызовите метод unlink() для объекта:
from pathlib import Path file_path = Path('/tmp/file.txt') try: file_path.unlink() except OSError as e: print("Ошибка: %s : %s" % (file_path, e.strerror))
pathlib.Path.unlink(), os.remove() и os.unlink() также могут быть использованы для удаления символической ссылки.
Вы можете использовать модуль glob для сопоставления нескольких файлов на основе шаблона. Например, чтобы удалить все файлы .txt в каталоге /tmp, вы должны использовать что-то вроде этого:
import os import glob files = glob.glob('/tmp/*.txt') for f in files: try: f.unlink() except OSError as e: print("Ошибка: %s : %s" % (f, e.strerror))
Чтобы рекурсивно удалить все файлы .txt в каталоге /tmp и во всех его подкаталогах, передайте аргумент recursive=True функции glob() и используйте шаблон “ ** `:
import os import glob files = glob.glob('/tmp/**/*.txt', recursive=True) for f in files: try: os.remove(f) except OSError as e: print("Ошибка: %s : %s" % (f, e.strerror))
Модуль pathlib включает в себя две функции, glob() и rglob() соответствие файлов в заданной директории. glob() сопоставляет файлы только в каталоге верхнего уровня. rglob(), рекурсивно сопоставляет все файлы в каталоге и всех подкаталогах. В следующем примере кода удаляются все файлы .txt в каталоге /tmp:
from pathlib import Path for f in Path('/tmp').glob('*.txt'): try: f.unlink() except OSError as e: print("Ошибка: %s : %s" % (f, e.strerror))
В Python вы можете использовать os.rmdir() и pathlib.Path.rmdir() для удаления пустой директории, и shutil.rmtree() для удаления непустой директории.
В следующем примере показано, как удалить пустой каталог:
import os dir_path = '/tmp/img' try: os.rmdir(dir_path) except OSError as e: print("Ошибка: %s : %s" % (dir_path, e.strerror))
Кроме того, вы можете удалить каталоги с помощью модуля pathlib:
from pathlib import Path dir_path = Path('/tmp/img') try: dir_path.rmdir() except OSError as e: print("Ошибка: %s : %s" % (dir_path, e.strerror))
Модуль shutil позволяет выполнять ряд операций высокого уровня файлов и каталогов.
С помощью функции shutil.rmtree() вы можете удалить данный каталог, включая его содержимое:
import shutil dir_path = '/tmp/img' try: shutil.rmtree(dir_path) except OSError as e: print("Ошибка: %s : %s" % (dir_path, e.strerror))
Переданный аргумент shutil.rmtree() не может быть символической ссылкой на каталог.
Python предоставляет несколько модулей для обработки файлов.
Мы показали вам, как использовать os.remove(), os.unlink(), pathlib.Path.unlink() чтобы удалить один файл, os.rmdir() и pathlib.Path.rmdir() чтобы удалить пустую директорию и shutil.rmtree() для рекурсивного удаления каталога и все его содержимое.
Будьте особенно осторожны при удалении файлов или каталогов, потому что, как только файл удален, он не может быть легко восстановлен.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.