如何使用 pathlib 删除目录树?

How do I delete a directory tree with pathlib?

我有一个使用 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 是否保证其结果的顺序,以便所有文件在它们所属的子文件夹之前返回?

实际上这可以用 iterdir 而不是 glob:

def rmtree(root):

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

    root.rmdir()