【问题标题】:How do I delete a directory tree with pathlib?如何使用 pathlib 删除目录树?
【发布时间】:2019-02-14 18:58:22
【问题描述】:

我有一个使用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()

但我不确定在调用rmdir 之前是否保证对folder.glob('**/*') 进行排序,以便所有子文件夹为空。

所以问题是双重的:

  1. 有没有更好的方法来递归删除带有pathlib 的目录?
  2. glob 是否保证其结果的顺序,以便所有文件在它们所属的子文件夹之前返回?

【问题讨论】:

    标签: python-3.x directory pathlib


    【解决方案1】:

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

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

    【讨论】:

    • 一个小的补充是添加一个 if root.exists() 检查。
    猜你喜欢
    • 2018-10-15
    • 2017-06-04
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多