- Как удалять файлы и каталоги в Python
- Удаление файлов
- Сопоставление с образцом
- Удаление каталогов (папок)
- Выводы
- Как удалить файлы в Python?
- 1 Использование модуля os
- 2 Использование модуля shutil
- 3 Использование модуля pathlib
- Используемая литература
- Pathlib — манипуляция путями, создание и удаление папок и файлов
- Концепт пути и директории в Python
Как удалять файлы и каталоги в Python
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 ошибка FileNotFoundError . И os.remove() и os.unlink() могут удалять только файлы, но не каталоги. Если указанный путь указывает на каталог, они IsADirectoryError ошибку IsADirectoryError .
Для удаления файла требуется разрешение на запись и выполнение для каталога, содержащего файл. В противном случае вы получите ошибку PermissionError .
Чтобы избежать ошибок при удалении файлов, вы можете использовать обработку исключений, чтобы перехватить исключение и отправить соответствующее сообщение об ошибке:
import os file_path = '/tmp/file.txt' try: os.remove(file_path) except OSError as e: print("Error: %s : %s" % (file_path, e.strerror))
Модуль pathlib доступен в Python 3.4 и выше. Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip. pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для различных операционных систем.
Чтобы удалить файл с pathlib модуля pathlib , создайте объект Path указывающий на файл, и вызовите метод unlink() для объекта:
from pathlib import Path file_path = Path('/tmp/file.txt') try: file_path.unlink() except OSError as e: print("Error: %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("Error: %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("Error: %s : %s" % (f, e.strerror))
Модуль pathlib включает две функции glob, 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("Error: %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("Error: %s : %s" % (dir_path, e.strerror))
В качестве альтернативы вы можете удалить каталоги с pathlib модуля pathlib :
from pathlib import Path dir_path = Path('/tmp/img') try: dir_path.rmdir() except OSError as e: print("Error: %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("Error: %s : %s" % (dir_path, e.strerror))
Аргумент, переданный в shutil.rmtree() не может быть символической ссылкой на каталог.
Выводы
Python предоставляет несколько модулей для работы с файлами.
Мы показали вам, как использовать os.remove() , os.unlink() , pathlib.Path.unlink() для удаления одного файла, os.rmdir() и pathlib.Path.rmdir() для удаления пустого файла. directory и shutil.rmtree() для рекурсивного удаления каталога и всего его содержимого.
Будьте особенно осторожны при удалении файлов или каталогов, потому что после удаления файла его будет нелегко восстановить.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как удалить файлы в Python?
В нашем руководстве по работе с файлами в Python мы узнали, как управлять ими. В этом руководстве мы узнаем, как удалять файлы в Python.
Предположим, что после успешного создания файла мы выполняем с ним некоторые операции, такие как чтение и запись. Как только мы закончили использовать файл для анализа различных наборов данных, возможно, в некоторых случаях он нам не понадобится в будущем.
Давайте посмотрим на различные способы, с помощью которых мы можем удалять файлы в Python.
1 Использование модуля os
Модуль os в Python предоставляет несколько простых в использовании методов, с помощью которых мы можем удалить или удалить файл, а также пустой каталог. Внимательно посмотрите на приведенный ниже код:
import os if os.path.isfile('/Users/test/new_file.txt'): os.remove('/Users/test/new_file.txt') print("success") else: print("File doesn't exists!")
Здесь мы использовали оператор if-else, чтобы избежать исключения, которое может возникнуть, если каталог файлов не существует. Метод isfile() проверяет существование файла с именем файла — ‘new_file.txt’.
Опять же, модуль os предоставляет нам другой метод, rmdir() , который можно использовать для удаления или удаления пустого каталога. Например:
import os os.rmdir('directory')
Примечание: каталог должен быть пустым. Если он содержит какой-либо контент, метод возвращает ошибку OSerror.
2 Использование модуля shutil
Shutil — это еще один метод удаления файлов, который позволяет пользователю легко удалить файл или его полный каталог (включая все его содержимое).
rmtree() — это метод модуля shutil, который рекурсивно удаляет каталог и его содержимое. Давайте посмотрим, как его использовать:
import shutil shutil.rmtree('/test/')
Для вышеупомянутого кода удален каталог / test /. И самое главное, все содержимое внутри каталога также удаляется.
3 Использование модуля pathlib
pathlib — это встроенный модуль Python, доступный для Python 3.4+.
import pathlib file=pathlib.path("test/new_file.txt") file.unlink()
В приведенном выше примере метод path() используется для получения пути к файлу, тогда как метод unlink() используется для отмены связи или удаления файла по указанному пути.
Метод unlink() работает с файлами. Если указан каталог, возникает ошибка OSError. Чтобы удалить каталог, мы можем прибегнуть к одному из ранее обсужденных методов.
Используемая литература
- https://docs.python.org/3/library/os.html#os.remove
- https://docs.python.org/3/library/shutil.html
- https://docs.python.org/3/library/pathlib.html
Pathlib — манипуляция путями, создание и удаление папок и файлов
Модуль Pathlib в Python упрощает работу с файлами и папками. Он доступен в Python 3.4 и более поздних версиях. Pathlib сочетает в себе лучшее из модулей файловой системы Python — os, os.path, glob и так далее.
В Python большинство скриптов предполагает работу с файловыми системами. Следовательно, неизбежно взаимодействие с названиями файлов и путями. Именно для этого в Python есть модуль Pathlib, который содержит полезные функции для выполнения задач, связанных с файлами. Pathlib предоставляет удобный для чтения и простой способ создания путей, представляя пути файловой системы в виде надлежащих объектов. Модуль позволяет создавать код, который можно переносить между платформами.
В данной статье мы подробно изучим модуль Pathlib с помощью различных примеров.
Концепт пути и директории в Python
Перед началом подробного рассмотрения модуля Pathlib важно разобраться в разнице между главными концептами темы — путем (path) и директорией (directory).
- Путь используется для идентификации файла. Путь предоставляет необязательную последовательность названий директорий, в конце которой значится конечное имя файла, а также его расширение;
- Расширение названия файла предоставляет некоторую информацию о формате/содержимом файла. Модуль Pathlib может работать как с абсолютными, так и с относительными путями;
- Абсолютный путь начинается с корневой директории и определяет полное дерево каталогов;
- Относительный путь, как следует из названия, является путем к файлу относительно другого файла или директории, обычно текущей;
- Директория представляет собой запись пути в файловой системе и включает название файла, время создания, размер, владельца и так далее.
Модуль Pathlib в Python занимается задачами, связанными с путями, такими как создание новых путей из названий файлов и других путей, проверка различных свойств путей, создание файлов и папок по определенным путям.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!