Python 有没有一种方法可以递归地只删除空的子目录?
我有一个用例,在给定状态目录的情况下,我只想删除python中的空子目录。 我已经评估了以下方法 1。找到-类型d-empty-exec rmdir{} 2。os.walkdir/scandir和do rmdirPython 有没有一种方法可以递归地只删除空的子目录?,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自动化删除空目录的过程,您可以试试这个,
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命令,因为它更容易理解,而且更短