如何用Python批量删除多文件夹下的.dcm格式文件?
批量删除多文件夹下的.dcm文件
问题背景
需要删除主文件夹及其所有子文件夹中的.dcm格式文件,尝试两种方法均失败:
方法一:单层级遍历代码(无法处理子文件夹)
最初使用的代码仅遍历主文件夹的直接子项,无法访问子文件夹内的目标文件,执行时触发路径错误:
import os dir_name = "mainFolder" test = os.listdir(dir_name) for item in test: if item.endswith(".zip"): os.remove(os.path.join(dir_name, item))
错误信息:
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'mainFolder\\innerFile.dcm'
问题根源:代码仅扫描mainFolder的一级目录,而目标文件实际路径为mainFolder\innerFolder\innerfile.dcm,路径不匹配导致无法定位文件。
方法二:嵌套循环匹配文件名(路径错误)
尝试通过文件名列表匹配删除,但代码存在语法缺陷和路径逻辑错误,执行无效:
listofnames=[] # 包含所有需要删除的文件名 for root, dirs, files in os.walk(mainFolder): for file in files: for name in listofnames if name == file: os.remove(name)
问题根源:
for name in listofnames缺少冒号,存在语法错误os.remove(name)仅传入文件名,未拼接当前文件夹的完整路径,系统无法定位文件位置
正确解决方案
使用os.walk递归遍历所有层级文件夹,拼接完整文件路径后判断后缀并删除:
import os main_folder = "mainFolder" # 递归遍历主文件夹及其所有子目录 for root, dirs, files in os.walk(main_folder): for file in files: # 匹配.dcm格式(忽略大小写) if file.lower().endswith(".dcm"): # 拼接文件完整路径 full_file_path = os.path.join(root, file) # 删除文件 os.remove(full_file_path) # 可选:打印删除记录用于验证 print(f"已删除:{full_file_path}")
说明:
os.walk(main_folder)会自动遍历所有子文件夹,root变量代表当前遍历到的文件夹路径os.path.join(root, file)生成文件的完整绝对路径,确保系统能准确定位目标文件file.lower().endswith(".dcm")可兼容大小写不同的后缀(如.DCM)
内容的提问来源于stack exchange,提问作者Heba
相关产品推荐
相关产品推荐

