Python 有没有一种方法可以递归地只删除空的子目录?

Python 有没有一种方法可以递归地只删除空的子目录?,python,Python,我有一个用例,在给定状态目录的情况下,我只想删除python中的空子目录。 我已经评估了以下方法 1。找到-类型d-empty-exec rmdir{} 2。os.walkdir/scandir和do rmdir 有没有更好更快的方法来实现这一点 如果您想使用python自动化删除空目录的过程,您可以试试这个, import os import errno source = "path_to_souce_dir" #-----> source dir path def delete(s

我有一个用例,在给定状态目录的情况下,我只想删除python中的空子目录。 我已经评估了以下方法

1。找到-类型d-empty-exec rmdir{}

2。os.walkdir/scandir和do rmdir


有没有更好更快的方法来实现这一点

如果您想使用python自动化删除空目录的过程,您可以试试这个,

import os
import errno

source = "path_to_souce_dir" #-----> source dir path

def delete(source):
    for filename in os.listdir(source):
        fullpath = os.path.join(source, filename)
        if os.path.isdir(fullpath):
            try:
                os.rmdir(fullpath)
            except OSError as ex:
                if ex.errno == errno.ENOTEMPTY:
                    delete(fullpath)

delete(source)

这不会像OP的例子那样递归地工作。@AKX我已经尝试过执行代码,上面的代码产生与执行
find完全相同的结果-键入d-empty-exec rmdir{}
。你觉得怎么样?我一定错过了上次的递归
delete(fullpath)
呼叫,对不起。这就是说,如果os.path.isdir(…),这应该使用
,因为设备文件、符号链接和其他东西确实存在:)@AKX没问题,将
os.path.isfile
替换为
os.path.isdir
。谢谢你的建议。使用
os.walk()
os.rmdir()
应该尽可能快地使用Python。如果你不需要支持windows,你可以使用bash命令,因为它更容易理解,而且更短