Python递归删除嵌套空目录

在实际应用中,经常遇到需要删除空目录的情况,手动一一删除效率太低。
通过Python标准库os可方便实现嵌套空目录的删除。

问题

假设现有test目录结构如下,需要删除test目录中的空目录。

test
└─11.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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值