При работе с файлами в Python очень важно уметь удалить файл. Допустим, вам потребовалось создать файлы для хранения данных, но после выполнения программы они не понадобились. Хорошей идеей будет удалить их, и в этой статье мы рассмотрим, как это сделать с помощью Python.
Как удалять файлы с помощью Python?
Удалить один или несколько ненужных файлов можно при помощи следующих модулей Python:
- os
- shutil
- pathlib
1. Удаление файла при помощи модуля os
Модуль os позволяет использовать функциональные возможности, зависящие от операционной системы.
Чтобы задействовать модуль os для удаления файла, мы импортируем его, а затем используем функцию remove()
, предоставляемую модулем для удаления файла. В качестве параметра remove()
принимает путь к файлу.
Пример удаления файла:
import os file_path = <file_path> if os.path.isfile(file_path): os.remove(file_path) print("File has been deleted") else: print("File does not exist")
В этом фрагменте кода мы сначала импортируем модуль os
, а затем сохраняем полный путь к файлу, который мы хотим удалить, в переменной file_path
. Далее мы проверяем, существует ли файл по этому пути, и удаляем его. Если такого файла нет, то ничего не делаем.
Чтобы удалить или очистить каталог, можно воспользоваться функцией rmdir()
модуля os
. Обратите внимание, что для этого каталог должен быть пустым.
import os os.rmdir('directory')
Если удаляемый каталог находится в той же папке, что и программа Python, то абсолютный путь указывать не нужно, подойдет и относительный. В противном случае путь можно записать в качестве параметра функции rmdir
.
Примечание редакции: об удалении непустого каталога читайте в статье “Как удалить папку в Python”.
2. Удаление файла при помощи модуля shutil
Модуль shutil
– это высокоуровневый модуль для работы с файлами. С его помощью вы можете выполнять такие функции, как копирование и удаление файлов и коллекций файлов.
Этот модуль также можно использовать для удаления как файлов, так и каталога. Но, в отличие от юзкейса модуля os, здесь каталог не обязательно должен быть пустым. Если вы удаляете каталог с помощью shutil
, вы также можете удалить все содержимое внутри него (файлы и подкаталоги).
Удалить каталог вам поможет функция rmtree()
. Удалить один файл с ее помощью нельзя.
import shutil shutil.rmtree('path')
Здесь вместо path
нужно указать путь к каталогу, который вы хотите удалить.
3. Удаление файла при помощи модуля pathlib
Если вы работаете с Python версии 3.4+, то для удаления файлов будет полезен модуль pathlib
. Он схож с модулем os, оба они имеют методы remove
и rmdir
.
При работе с модулем pathlib
сначала необходимо создать объект Path
. При создании экземпляра класса Path
будет возвращен объект WindowsPath
или PosixPath
в зависимости от машины, на которой вы работаете. Объект WindowsPath
будет возвращен для Windows OS, а для не Windows OS, таких как Linux, будет возвращен PosixPath
.
>>> import pathlib >>> p_object = Path(".") >>> type(p_object)
Следующим шагом будет использование функции unlink()
. Она удаляет файл или символическую ссылку. Если вы хотите удалить каталог, вместо нее нужно использовать функцию rmdir()
.
import pathlib file = pathlib.Path("test/file.txt") file.unlink()
Удаление каталога:
import pathlib directory = pathlib.Path("files/") directory.rmdir()
Но опять же, функция rmdir()
позволяет удалять только пустые каталоги.
Мы можем подытожить все это следующей таблицей:
Удалить один файл? | os | os.remove() |
pathlib | path_object.unlink() |
|
Удаление пустых каталогов? | os | rmdir() |
pathlib | ||
Удаление непустых каталогов? | shutil | rmtree() |
Заключение
Давайте подведем итоги. Из этой статьи вы узнали следующее:
- В Python у нас есть в основном три метода удаления файлов.
- Модуль os в Python позволяет использовать функциональные возможности, зависящие от операционной системы.
- Если вы удаляете каталог с помощью
shutil
, вы также можете удалить все содержимое внутри него (файлы и подкаталоги). - Функция
unlink()
удаляет файл или символическую ссылку.
Перевод статьи Taneesha Mathur «How to Delete File in Python?».