PathLib рекурсивно удаляет каталог? - PullRequest
0 голосов
/ 05 мая 2018

Есть ли способ удалить каталог и его содержимое в модуле PathLib? С path.unlink() он удаляет только файл, с path.rmdir() каталог должен быть пустым. Нет ли способа сделать это за один вызов функции?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Если вы не возражаете против использования сторонней библиотеки, попробуйте path.py . Его API похож на pathlib.Path, но предоставляет некоторые дополнительные методы, включая Path.rmtree() для рекурсивного удаления дерева каталогов.

0 голосов
/ 05 мая 2018

Как вы уже знаете, единственными двумя Path методами удаления файлов / каталогов являются .unlink() и .rmdir(), и оба не выполняют то, что вам нужно.

Pathlib - это модуль, который обеспечивает объектно-ориентированные пути для разных ОС, он не предназначен для использования множества разнообразных методов.

Цель этой библиотеки - предоставить простую иерархию классов для обрабатывать пути файловой системы и общие операции, которые пользователи выполняют над ними.

«Необычные» изменения файловой системы, такие как рекурсивное удаление каталога, хранятся в разных модулях. Если вы хотите рекурсивно удалить каталог, вы должны использовать модуль shutil. (Работает также с Path экземплярами!)

import shutil
import pathlib
import os  # for checking results

print(os.listdir())
# ["a_directory", "foo.py", ...]

path = pathlib.Path("a_directory")

shutil.rmtree(path)
print(os.listdir())
# ["foo.py", ...]
...