Как удалить дерево каталогов с помощью pathlib? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть проект, использующий pathlib, и я хочу сделать эквивалент shutil.rmtree.

Я думал сделать это с чем-то вроде:

def pathlib_rmtree(folder):
    if folder.exists():
        for file in folder.glob('**/*'):
            if file.is_dir():
                file.rmdir()
            else:
                file.unlink()
        folder.rmdir()

, но яне уверен, гарантированно ли упорядочен порядок folder.glob('**/*'), чтобы все подпапки были пустыми перед вызовом rmdir.

Так что вопрос двоякий:

  1. Есть ли лучшийспособ рекурсивного удаления каталога с помощью pathlib?
  2. Гарантирует ли glob порядок своего результата, чтобы все файлы возвращались до подпапки, к которой они принадлежат?

1 Ответ

0 голосов
/ 22 марта 2019

На самом деле это можно сделать с помощью iterdir вместо glob:

def rmtree(root):

    for p in root.iterdir():
        if p.is_dir():
            rmtree(p)
        else:
            p.unlink()

    root.rmdir()
...