代码之家  ›  专栏  ›  技术社区  ›  Jacques Gaudin

如何使用pathlib删除目录树?

  •  0
  • Jacques Gaudin  · 技术社区  · 6 年前

    我有一个项目使用 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. 路径库 ?
    2. glob 是否保证其结果的顺序,以便所有文件都在它们所属的子文件夹之前返回?
    0 回复  |  直到 6 年前
        1
  •  3
  •   Jacques Gaudin    6 年前

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

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