如何使用pathlib删除目录树?

时间:2019-02-14 18:58:23

标签: python-3.x directory 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是否保证其结果的顺序,以便所有文件都在它们所属的子文件夹之前返回?

1 个答案:

答案 0 :(得分:0)

实际上,这可以使用iterdir而不是glob完成:

def rmtree(root):

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

    root.rmdir()