使用Python批量删除多级子目录下指定文件夹及脚本正确性校验
脚本问题检查及修正方案
原脚本存在的严重问题
- 语法错误1:变量
dirpath是os.walk返回的字符串类型路径,本身没有exists()和is_dir()方法,直接运行会直接抛出属性错误,无法执行。 - 语法错误2:
shutil.rmtree(dirpath)行没有正确缩进在if判断语句下,不符合Python缩进规则,直接运行会报语法错误。 - 逻辑致命错误:完全没有判断当前遍历到的目录是否是你需要删除的目标目录,若修复语法后强制运行,会直接删除
/Volume/X下所有子目录,造成全量数据丢失。
修正后的安全脚本
建议先执行 dry run(模拟运行)仅打印待删除目录,确认清单无误后再开启删除逻辑:
import os import shutil # 根目录配置 root_dir = '/Volume/X' # 要删除的目标目录名 target_dir_name = 'myDir' for subdir, dirs, files in os.walk(root_dir): # 匹配目标目录名 if os.path.basename(subdir) == target_dir_name: print(f"待删除目录:{subdir}") # 确认上面打印的目录全部符合删除预期后,再取消下面两行的注释执行删除 # if os.path.isdir(subdir): # shutil.rmtree(subdir)
使用注意事项
- 首次运行请勿取消删除代码的注释,先核对打印出的待删除目录清单,确认没有误判的重要目录后再执行删除操作。
- 建议操作前对
/Volume/X目录做全量备份,避免异常情况造成数据损失。
内容的提问来源于stack exchange,提问作者rita1989
相关产品推荐
相关产品推荐

