Python 实现递归与遍历两种删除空文件夹的方法

落日邮差
落日邮差
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍在 Python 中删除空文件夹的两种常用方法。第一种基于递归遍历,深度检查子目录并清理空路径;第二种利用 os.walk 遍历目录树,尝试删除子目录并捕获非空异常。通过具体代码示例展示如何实现自动清理空目录,适用于批量整理文件场景。

基于递归的删除方案

第一种实现方案采用递归逻辑。核心思路是遍历指定目录下的所有子项,若遇到子目录则继续深入递归检查。当确认某目录为空时,执行删除操作。


import os

def delete_gap_dir(dir):
  if os.path.isdir(dir):
    for d in os.listdir(dir):
      #print('1',os.path.join(dir, d))

      path = os.path.join(dir, d)
      if os.path.isdir(path) and not path.endswith('pic_neg'):
        delete_gap_dir(path)
    if not os.listdir(dir):
      #print('空文件夹:' + dir)
      os.rmdir(dir)
      print('移除空目录: ' + dir)
    #else:
      #print(dir)
# delete_gap_dir(os.getcwd())

if __name__ == "__main__":
  dir = r'C:\newpython\123'
  delete_gap_dir(dir)
  print(u'删除完毕')

运行效果如图所示,程序会打印被移除的目录路径,并在处理完成后提示删除完毕。

基于 os.walk 的遍历方案

第二种方案利用 os.walk 函数进行目录遍历。该方法无需手动递归,而是直接获取目录树中的所有子目录名称,尝试对每个子目录执行删除操作。由于 os.rmdir 仅能删除空目录,若目录非空会抛出异常,因此通过异常处理机制忽略非空目录,仅成功删除空目录。


import os
def del_emp_dir(path):
  for (root, dirs, files) in os.walk(path):
    for item in dirs:
      dir = os.path.join(root, item)
      try:
        os.rmdir(dir) #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
        print(dir)
      except Exception as e:
        print('Exception',e)
if __name__ == '__main__':
  dir = r'F:\test'
  del_emp_dir(dir)

以上即为 Python 中两种删除空文件夹的具体实现方式,更多关于 Python 文件操作的技术内容,欢迎参考本站其他相关文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表