You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:22:52