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

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

本文介绍在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。