Поиск по сайту:
Очень умным людям начинают не доверять, если видят их смущение (Ф. Ницше).

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
03.02.2020
Как удалить файлы и каталоги в 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. Оба 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))

 

Читать  Как анализировать и очищать HTML с помощью Pyquery

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))

 

Читать  Тернарный оператор в Python

Модуль 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() для рекурсивного удаления каталога и все его содержимое.

Будьте особенно осторожны при удалении файлов или каталогов, потому что, как только файл удален, он не может быть легко восстановлен.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Рекомендуемое
В этой статье мы покажем вам, как упростить реализацию отслеживания…

Спасибо!

Теперь редакторы в курсе.