Python中如何检测文件夹为空并自动删除

我用os.listdir(directory)==[]判断文件夹是否为空,然后再删除

但是当 directory 下文件很多时,效率很低

Python 怎样高效的删除空文件夹


Python中如何检测文件夹为空并自动删除
3 回复
import os
import shutil

def delete_empty_folders(folder_path):
    """
    递归删除指定路径下的所有空文件夹
    """
    if not os.path.isdir(folder_path):
        print(f"路径不存在或不是文件夹: {folder_path}")
        return
    
    # 递归处理子文件夹
    for item in os.listdir(folder_path):
        item_path = os.path.join(folder_path, item)
        if os.path.isdir(item_path):
            delete_empty_folders(item_path)
    
    # 检查当前文件夹是否为空
    if not os.listdir(folder_path):
        try:
            os.rmdir(folder_path)
            print(f"已删除空文件夹: {folder_path}")
        except OSError as e:
            print(f"删除失败 {folder_path}: {e}")

# 使用示例
if __name__ == "__main__":
    target_folder = "/path/to/your/folder"  # 替换为你的目标路径
    delete_empty_folders(target_folder)

这个函数会递归遍历文件夹,自底向上删除所有空文件夹。关键点:

  1. os.listdir()检查文件夹内容
  2. 递归处理确保先删除深层空文件夹
  3. 使用os.rmdir()删除空文件夹(只能删除空文件夹)

如果你只想检查单个文件夹是否为空而不递归,用这个:

def is_folder_empty(folder_path):
    return os.path.isdir(folder_path) and not os.listdir(folder_path)

总结:用递归遍历+os.listdir判断。


Python 文件操作相关问题 :www.revotu.com/python-file-operation-related-issues.html

Python<br>try:<br> os.rmdir(directory)<br>except OSError:<br> pass<br>

os.rmdir()
os.removedirs()
大概能满足你的要求,不过你最好看一下官方文档对这 2 个函数的解释,否则出事了别找我

回到顶部