递归删除python中的文件夹

新手上路,请多包涵

我在删除空目录时遇到问题。这是我的代码:

 for dirpath, dirnames, filenames in os.walk(dir_to_search):
    //other codes

    try:
        os.rmdir(dirpath)
    except OSError as ex:
        print(ex)

参数 dir_to_search 是我传递需要完成工作的目录的地方。该目录如下所示:

 test/20/...
test/22/...
test/25/...
test/26/...

请注意,以上所有文件夹都是空的。当我运行此脚本时,文件夹 20 , 25 单独被删除!但是文件夹 2526 不会被删除,即使它们是空文件夹。

编辑:

我得到的例外是:

 [Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/29'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/29/tmp'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/28'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/28/tmp'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/26'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/25'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/27'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/27/tmp'

我在哪里犯了错误?

原文由 sriram 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 590
2 个回答

尝试 shutil.rmtree

 import shutil
shutil.rmtree('/path/to/your/dir/')

原文由 Tomek 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是我的纯 pathlib 递归目录取消链接器:

 from pathlib import Path

def rmdir(directory):
    directory = Path(directory)
    for item in directory.iterdir():
        if item.is_dir():
            rmdir(item)
        else:
            item.unlink()
    directory.rmdir()

rmdir(Path("dir/"))

原文由 mitch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题