如何使用pathlib删除目录树?

问题描述 投票:1回答:1

我有一个使用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是否保证其结果的顺序,以便在它们所属的子文件夹之前返回所有文件?
python-3.x directory pathlib
1个回答
0
投票

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

def rmtree(root):

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

    root.rmdir()
© www.soinside.com 2019 - 2024. All rights reserved.