在实际应用中,经常遇到需要删除空目录的情况,手动一一删除效率太低。
通过Python标准库os可方便实现嵌套空目录的删除。
问题
假设现有test目录结构如下,需要删除test目录中的空目录。
test
└─1
│ 1.txt
│
└─2
└─3
解决方法要点
- 利用
os.rmdir方法删除空目录,当目录不为空时,会抛出异常。 - 利用
os.walk方法遍历test目录。注意os.walk方法的topdown参数。topdown参数为遍历方式,布尔值,默认值为True:topdown参数为True时,采用自上而下的遍历模式。从根目录向子目录遍历。topdown参数为False时,采用自下而上的遍历模式。从子目录向根目录遍历。
在本例中需要删除嵌套目录,因此,topdown参数的值应为False,否则只能删除嵌套最深的一个子目录。
代码
import os
def remove_empty_dir(path):
for (root, dirs, files) in os.walk(path, topdown=False):
for item in dirs:
dir = os.path.join(root, item)
try:
os.rmdir(dir)
print(dir)
except Exception as e:
pass
if __name__ == '__main__':
path =r'd:\test'
remove_empty_dir(path)
由于子目录1还与1个文件不为空,所以未能删除。
输出为:
d:\test\1\2\3
d:\test\1\2
555



被折叠的 条评论
为什么被折叠?



