Как удалить файл в Python?

При работе с файлами в Python очень важно уметь удалить файл. Допустим, вам потребовалось создать файлы для хранения данных, но после выполнения программы они не понадобились. Хорошей идеей будет удалить их, и в этой статье мы рассмотрим, как это сделать с помощью Python.

Как удалять файлы с помощью Python?

Удалить один или несколько ненужных файлов можно при помощи следующих модулей Python:

  1. os
  2. shutil
  3. 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() позволяет удалять только пустые каталоги.

Мы можем подытожить все это следующей таблицей:

Удалить один файл?osos.remove()
pathlibpath_object.unlink()
Удаление пустых каталогов?osrmdir()
pathlib
Удаление непустых каталогов?shutilrmtree()

Заключение

Давайте подведем итоги. Из этой статьи вы узнали следующее:

  • В Python у нас есть в основном три метода удаления файлов.
  • Модуль os в Python позволяет использовать функциональные возможности, зависящие от операционной системы.
  • Если вы удаляете каталог с помощью shutil, вы также можете удалить все содержимое внутри него (файлы и подкаталоги).
  • Функция unlink() удаляет файл или символическую ссылку.

Перевод статьи Taneesha Mathur «How to Delete File in Python?».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *