Как удалить файл в python
Перейти к содержимому

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

  • автор:

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

удаление файла

В нашем руководстве по работе с файлами в Python мы узнали, как управлять ими. В этом руководстве мы узнаем, как удалять файлы в Python.

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

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

1 Использование модуля os

Модуль os в Python предоставляет несколько простых в использовании методов, с помощью которых мы можем удалить или удалить файл, а также пустой каталог. Внимательно посмотрите на приведенный ниже код:

Здесь мы использовали оператор if-else, чтобы избежать исключения, которое может возникнуть, если каталог файлов не существует. Метод isfile() проверяет существование файла с именем файла — ‘new_file.txt’.

Опять же, модуль os предоставляет нам другой метод, rmdir() , который можно использовать для удаления или удаления пустого каталога. Например:

Примечание: каталог должен быть пустым. Если он содержит какой-либо контент, метод возвращает ошибку OSerror.

2 Использование модуля shutil

Shutil — это еще один метод удаления файлов, который позволяет пользователю легко удалить файл или его полный каталог (включая все его содержимое).

rmtree() — это метод модуля shutil, который рекурсивно удаляет каталог и его содержимое. Давайте посмотрим, как его использовать:

Для вышеупомянутого кода удален каталог / test /. И самое главное, все содержимое внутри каталога также удаляется.

3 Использование модуля pathlib

pathlib — это встроенный модуль Python, доступный для Python 3.4+.

В приведенном выше примере метод path() используется для получения пути к файлу, тогда как метод unlink() используется для отмены связи или удаления файла по указанному пути.

Метод unlink() работает с файлами. Если указан каталог, возникает ошибка OSError. Чтобы удалить каталог, мы можем прибегнуть к одному из ранее обсужденных методов.

10 самых продуктивных техник для работы с файлами в Python

Jenny V

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

1. Показ текущей директории

Чтобы узнать текущую рабочую директорию, мы можем просто ввести функцию getcwd() модуля os, как показано ниже:

Данный код также демонстрирует возможность использования модуля pathlib для получения текущей рабочей директории. Обратите внимание, что для выполнения операций с файлами именно этот модуль является предпочтительным вариантом, и в статье вас ждёт немало примеров его употребления. Однако, если у вас устаревшая версия Python (< 3.4), то вам придётся использовать модуль os .

2. Создание новой директории

Для создания новой директории можно применить функцию mkdir() , которая выполнит эту операцию по конкретно заданному пути. Если вы просто укажете имя новой директории, то она будет создана в текущем каталоге:

Однако, если вы намерены создать новую директорию с несколькими вложенными уровнями (имеется в виду наличие одной папки внутри другой), то вам необходимо использовать функцию makedirs() . Обратимся к простому примеру:

Если же у вас последние версии Python (≥ 3.4), то для решения вышеуказанной задачи можно воспользоваться преимуществом модуля pathlib . При этом он способен не только создавать поддиректории, но также при необходимости работать с каталогами, отсутствующими в пути. Рассмотрим пример:

Имейте в виду, что попытка повторного выполнения вышеприведённого кода может вызвать проблемы — вы не сможете создать новую директорию, если такая уже существует. Стоит отметить, что эта проблема решается путём присвоения аргументу exist_ok значения True , как показано выше. А вот значение False , установленное для него по умолчанию, не позволит повторно создать уже существующую директорию и приведёт к ошибке.

3. Удаление директорий и файлов

По завершении операций с файлами или папками, возможно, потребуется их удалить, чтобы упорядочить ресурсы компьютера. Для удаления файла в модуле os применяется функция remove() , а для удаления папки — функция rmdir() . Попытка же удалить директорию с помощью remove() вызовет ошибку. Рассмотрим применение этих функций:

При использовании модуля pathlib за удаление файла отвечает метод unlink() , а за удаление директории — rmdir() . Обратите внимание, что они оба являются методами экземпляра объекта Path .

4. Получение списка файлов

В процессе обработки данных для аналитики или проектов МО вам потребуется получить список файлов в определённой директории. Зачастую их имена соответствуют определённому шаблону. Допустим, мы хотим найти все файлы .txt в директории. Далее рассмотрим, как это можно сделать с помощью метода glob() с объектом Path . Обратите внимание, что данный метод создаёт генератор с возможностью итерации. Следующий код наглядно демонстрирует создание генератором списка путей файлов:

Как вариант, также удобно использовать модуль glob напрямую, как показано ниже. Он располагает аналогичной функциональностью, создавая списки имён файлов, с которыми впоследствии можно работать. Заметьте, что Path.glob() создаёт пути. Оба метода будут работать в большинстве сценариев, таких как чтение и запись файлов.

5. Перемещение и копирование файлов

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

Копирование же можно выполнить при помощи функциональности, доступной в shutil, ещё одном полезном модуле из стандартной библиотеки для операций с файлами. Здесь за это отвечает функция copy() , в которой исходный и целевой файлы указываются в виде строк. Ниже вы увидите простой пример. Конечно, вы можете объединить функции copy() и glob() для работы с группой файлов, соответствующих одному паттерну.

6. Проверка директории/файла

На самом деле, эта операция уже много раз встречалась в вышеприведённых примерах. В них для проверки того, существует ли конкретный путь, применялся метод exists() . При условии положительного ответа он возвращает True , в противном случае — False . Примечательно, что эта функция доступна в обоих модулях, os и pathlib, но с разными сигнатурами. Рассмотрим соответствующие примеры их применения:

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

7. Получение информации о файле

При работе с файлами во многих сценариях возникает необходимость извлечения их имён. С объектом Path это просто как дважды два, и вы уже были свидетелями его применения. Можно просто извлечь атрибут name файлового объекта Path . Если же вам нужно узнать только имя без расширения, то извлекать следует атрибут stem . Следующий фрагмент кода демонстрирует соответствующие случаи применения:

В отдельных случаях вам потребуется узнать расширение файла, с которым вы работаете. Чаще всего можно воспользоваться атрибутом suffix файлового объекта Path , как показано ниже:

Если необходимо получить больше информации о файле, например, его размер и время изменения, то для этого в нашем распоряжении есть метод stat() , принцип действия которого аналогичен os.stat() , знакомого тем, кто привык работать с модулем os.

8. Чтение файлов

Одна из важнейших операций с файлами — считывание их данных. В конце концов, содержимое файла является, вероятно, единственной причиной его появления. Самый традиционный способ состоит в создании файлового объекта с помощью встроенной функции open() . По умолчанию она откроет файл в режиме чтения и будет работать с его данными как с текстом. Рассмотрим пример:

Этот код демонстрирует самые распространённые способы чтения содержимого. Если вы знаете, что ваш файл включает немного данных, можете считать их все за раз с помощью метода read() . Но если он очень крупный, то следует рассмотреть вариант с генератором, роль которого выполняет файловый объект. Он обрабатывает данные построчно и тем самым экономно расходует память, обходясь без загрузки всех данных при применении read() .

Как уже ранее упоминалось, функция open() по умолчанию работает с содержимым файла как с текстом. Однако в случае с бинарными файлами необходимо явно задать данное условие. Например, вместо ‘r’ следует ввести ‘rb’ . Это требование также относится и к записи файлов, о чём мы поговорим далее. Ещё один непростой момент связан с кодировкой файла. Во многих случаях функция open() сможет выполнить эту операцию за нас, и большинство файлов, с которыми мы работаем, будут в кодировке “utf-8”. Если же вы обрабатываете файлы, применяя другие форматы кодировки, вам следует установить аргумент encoding .

9. Запись файлов

Для записи данных можно опять же создать файловый объект, открыв файл в режиме записи ( ‘w’ ) или дозаписи ( ‘a’ ). В первом случае при записи данных в файл его старое содержимое удаляется, а во втором — данные добавляются в конец файла. Рассмотрим пример работы этих двух режимов в следующем фрагменте кода.

Этот код подтверждает, что мы можем записывать данные в двух режимах: записи и дозаписи. Обратили вы внимание или нет, но каждый раз при открытии файла использовалась инструкция with . Объясняется это тем, что она создаёт контекст для обработки файла и помогает закрыть файловый объект по завершении операций. Если же вовремя этого не сделать, то открытый файловый объект может повредиться.

10. Архивирование и разархивирование файлов

При работе с большим числом файлов может потребоваться их архивирование для долгосрочного хранения или временной передачи. Соответствующие возможности предоставляются модулем zipfile. Для архивирования файлов функцией ZipFile() создаётся файловый объект zip, что напоминает случай с функцией open() , поскольку обе эти функции предусматривают создание файлового объекта, управляемого контекстным менеджером (вспоминаете применение инструкции with ?). Обратимся к фрагменту кода с простым примером:

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

Заключение

Итак, в данной статье мы рассмотрели 10 наиболее полезных операций по работе с файлами. Как вы могли убедиться, все они укладываются в несколько строк кода, поэтому не представляют абсолютно никакой сложности. Если вы с ними не знакомы, то надеемся, что эта статья послужит для вас кратким руководством в процессе работы с файлами.

How can I delete a file or folder in Python?

John Smith's user avatar

shutil.rmtree() deletes a directory and all its contents.

Path objects from the Python 3.4+ pathlib module also expose these instance methods:

pathlib.Path.unlink() removes a file or symbolic link.

pathlib.Path.rmdir() removes an empty directory.

Python syntax to delete a file

pathlib Library for Python version >= 3.4

Path.unlink(missing_ok=False)

Unlink method used to remove the file or the symbolik link.

  • If missing_ok is false (the default), FileNotFoundError is raised if the path does not exist.
  • If missing_ok is true, FileNotFoundError exceptions will be ignored (same behavior as the POSIX rm -f command).
  • Changed in version 3.8: The missing_ok parameter was added.

Best practice

First, check if the file or folder exists and then delete it. You can achieve this in two ways:

  1. os.path.isfile("/path/to/file")
  2. Use exception handling.

EXAMPLE for os.path.isfile

Exception Handling

Respective output

Python syntax to delete a folder

Example for shutil.rmtree()

Andreas Violaris's user avatar

Anand Tripathi's user avatar

(See complete documentation on shutil) and/or

(Complete documentation on os.)

sP_'s user avatar

Here is a robust function that uses both os.remove and shutil.rmtree :

You can use the built-in pathlib module (requires Python 3.4+, but there are backports for older versions on PyPI: pathlib , pathlib2 ).

To remove a file there is the unlink method:

Or the rmdir method to remove an empty folder:

Deleting a file or folder in Python

There are multiple ways to Delete a File in Python but the best ways are the following:

  1. os.remove() removes a file.
  2. os.unlink() removes a file. it is a Unix name of remove() method.
  3. shutil.rmtree() deletes a directory and all its contents.
  4. pathlib.Path.unlink() deletes a single file The pathlib module is available in Python 3.4 and above.

os.remove()

Example 1: Basic Example to Remove a File Using os.remove() Method.

Example 2: Checking if File Exists using os.path.isfile and Deleting it With os.remove

Example 3: Python Program to Delete all files with a specific extension

Example 4: Python Program to Delete All Files Inside a Folder

To delete all files inside a particular directory, you simply have to use the * symbol as the pattern string. #Importing os and glob modules import os, glob #Loop Through the folder projects all files and deleting them one by one for file in glob.glob("pythonpool/*"): os.remove(file) print("Deleted " + str(file))

os.unlink()

os.unlink() is an alias or another name of os.remove() . As in the Unix OS remove is also known as unlink. Note: All the functionalities and syntax is the same of os.unlink() and os.remove(). Both of them are used to delete the Python file path. Both are methods in the os module in Python’s standard libraries which performs the deletion function.

shutil.rmtree()

Example 1: Python Program to Delete a File Using shutil.rmtree()

Example 2: Python Program to Delete a File Using shutil.rmtree()

pathlib.Path.rmdir() to remove Empty Directory

Pathlib module provides different ways to interact with your files. Rmdir is one of the path functions which allows you to delete an empty folder. Firstly, you need to select the Path() for the directory, and then calling rmdir() method will check the folder size. If it’s empty, it’ll delete it.

This is a good way to deleting empty folders without any fear of losing actual data.

user_na's user avatar

dataninsight's user avatar

How do I delete a file or folder in Python?

For Python 3, to remove the file and directory individually, use the unlink and rmdir Path object methods respectively:

Note that you can also use relative paths with Path objects, and you can check your current working directory with Path.cwd .

For removing individual files and directories in Python 2, see the section so labeled below.

To remove a directory with contents, use shutil.rmtree , and note that this is available in Python 2 and 3:

Demonstration

New in Python 3.4 is the Path object.

Let’s use one to create a directory and file to demonstrate usage. Note that we use the / to join the parts of the path, this works around issues between operating systems and issues from using backslashes on Windows (where you’d need to either double up your backslashes like \\ or use raw strings, like r»foo\bar» ):

Now let’s delete them. First the file:

We can use globbing to remove multiple files — first let’s create a few files for this:

Then just iterate over the glob pattern:

Now, demonstrating removing the directory:

What if we want to remove a directory and everything in it? For this use-case, use shutil.rmtree

Let’s recreate our directory and file:

and note that rmdir fails unless it’s empty, which is why rmtree is so convenient:

Now, import rmtree and pass the directory to the funtion:

and we can see the whole thing has been removed:

Python 2

If you’re on Python 2, there’s a backport of the pathlib module called pathlib2, which can be installed with pip:

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

In this article, we will cover how to delete (remove) files and directories in Python. Python provides different methods and functions for removing files and directories. One can remove the file according to their need.

Various methods provided by Python are –

Deleting file/dir using the os.remove() method

OS module in Python provides functions for interacting with the operating system. All functions in the os module raise OSError in the case of invalid or inaccessible file names and paths, or other arguments that have the correct type but are not accepted by the operating system.

os.remove() method in Python is used to remove or delete a file path. This method can not remove or delete a directory. If the specified path is a directory then OSError will be raised by the method.

Syntax of os.remove()

  • dir_fd (optional): A file descriptor referring to a directory. The default value of this parameter is None. If the specified path is absolute then dir_fd is ignored.

Return Type: This method does not return any value.

Example 1: Delete a File in Python

Suppose the file contained in the folder are:

We want to delete file1 from the above folder. Below is the implementation.

Python3

Output:

Example 2: Remove file with absolute path

If the specified path is a directory.

Python3

Output:

Example 3: Check if File Exists Before Deleting

Handling error while using os.remove() method.

Python3

Output:

Note: To know more about os.remove() click here.

Deleting file/dir using the os.rmdir() method

os.rmdir() method in Python is used to remove or delete an empty directory. OSError will be raised if the specified path is not an empty directory.

Syntax of os.rmdir()

  • path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.
  • dir_fd (optional): A file descriptor referring to a directory. The default value of this parameter is None. If the specified path is absolute then dir_fd is ignored.

Example 1: Delete all directories from a Directory

Suppose the directories are –

We want to remove the directory Geeks. Below is the implementation.

Python3

Output:

Example 2: Error Handling while deleting a directory

Handling errors while using os.rmdir() method,

Python3

Output:

Note: To know more about os.rmdir() click here.

Deleting file/dir using the shutil.rmtree()

shutil.rmtree() is used to delete an entire directory tree, a path must point to a directory (but not a symbolic link to a directory).

Syntax of shutil.rmtree()

  • path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.
  • ignore_errors: If ignore_errors is true, errors resulting from failed removals will be ignored.
  • onerror: If ignore_errors is false or omitted, such errors are handled by calling a handler specified by onerror.

Delete a directory and the files contained in it.

Example 1:

Suppose the directory and sub-directories are as follow.

# Parent directory:

# Directory inside parent directory:

# File inside the sub-directory:

Example: Delete all Files from a Directory

We want to remove the directory Authors. Below is the implementation.

Python3

Output:

Example 2: Ignore error while deleting a directory

By passing ignore_errors = True.

Python3

Output:

Traceback (most recent call last): File “D:/Pycharm projects/gfg/gfg.py”, line 16, in shutil.rmtree(path, ignore_errors=False) File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 730, in rmtree return _rmtree_unsafe(path, onerror) File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 589, in _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 586, in _rmtree_unsafe with os.scandir(path) as scandir_it: FileNotFoundError: [WinError 3] The system cannot find the path specified: ‘D:/Pycharm projects/GeeksforGeeks/Authors’

Example 3: Exception handler

In onerror a function should be passed which must contain three parameters.

Добавить комментарий

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