Рекурсивное удаление файла в python
24 ноября 2013 г. 23:20
Удаление файла
Стандартное удаление файла в python:
import os os.remove(path)
path - путь до папки.
Удаление папки
Для удаления папки нужно подключить специальный пакет shutil
:
import shutil shutil.rmtree(path, True)
path - путь до папки.
Аргумент True
в методе rmtree()
позволяет команде игнорировать ошибки, которые могут встретиться при удалении каталога.
Рекурсивное удаление файлов и папок
Недавно надо было удалить ненужный файл placeholder из некоторого числа вложенных папок. Немного допилив чужой скрипт, у меня вышла следующая полезная функция, которая удаляет и файлы, и папки по заданному имени (при необходимости можно этот скрипт модифицировать для удаления только файла или только папки).
import os import shutil def delete_files_from_tree(path, file_name): files = os.listdir(path) for f in files: p = os.path.join(path, f) if os.path.isdir(p): print p if f == file_name: shutil.rmtree(p, True) else: delete_files_from_tree(p, file_name) else: if f == file_name: os.remove(p)
Собственно откуда эта задача возникла? Как известно, в mercurial пустую папку не добавишь в репозиторий, поэтому приходиться создавать эти самые "держатели места", т. е. placeholder-ы. И мне надо было просто скопировать репозиторий без папки .hg и избавиться от ненужных placeholder-ов.
Похожие статьи:
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0