今天同事给我提了个脚本需求:删除某个路径下的所有空的文件夹和空文件,刚开始的时候觉得挺简单,
后来发现了一个问题:由于文件夹有多层目录从而导致底层的空文件夹删除以后上级文件夹有可能变成空文件夹
这就导致删除不彻底。
我的思路是这样的
1.首先删除空文件,借用os.walk()
2.删除文件以后,从底层递归删除空文件夹。
废话不多说上代码,由于公司网络不能接外网代码全靠手打,所以偷个懒只写核心的代码,大家需要自己改改。
首先是删除空文件,dir是文件路径
for root,dirs,files in os.walk(dir):
for file in files:
src_file=os.path.join(root,file)
if os.path.getsize(src_file) == 0:
os.remove(src_file)
删除空文件夹:
dir_list=[]
for root,dirs,files in os.walk(dir):
dir_list.append(root)
# 先生成文件夹的列表,重点是下边
for root in dir_list[::-1]:
if not os.listdir(root):
os.rmdir(root)
可以看到删除文件夹的时候是从最底层开始逐层删除,这才能保证所有的空文件夹都能删除。