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

如何从多层子文件夹复制DICOM图像到公共文件夹并按规则重命名

DICOM图像批量复制重命名方案

修改要点

  • 调整DICOM文件匹配规则为全递归匹配,无需固定目录层级,适配任意嵌套的文件夹结构
  • 新增父目录名提取逻辑:直接取每个dcm文件所在的上一级目录(即你提到的患者专属唯一命名文件夹)作为文件名前缀
  • 替换原脚本的os.rename为shutil.copy2,实现文件复制而非移动,保留源文件不变同时保留文件元数据
  • 新增目标目录自动创建逻辑,避免目标路径不存在时报错
  • 重命名规则直接拼接「患者文件夹名_原文件名」,完全匹配你需要的命名格式

完整可运行代码

import glob
import os
import shutil

# 源路径与目标路径定义
dir_src = r"/path/to/folder_with_subfolders/"
dir_dst = r"/path/to/destination/"    

# 自动创建目标文件夹(如果不存在)
os.makedirs(dir_dst, exist_ok=True)

# 递归获取所有后缀为.dcm的文件
files = glob.glob(os.path.join(dir_src, '**/*.dcm'), recursive=True)     

for file in files:
    # 1. 获取原文件名,示例值:1.dcm
    base_filename = os.path.basename(file)
    # 2. 获取该dcm文件所在的父目录名,示例值:Subfolder_with_patientID1
    patient_folder = os.path.basename(os.path.dirname(file))
    # 3. 拼接成新文件名,示例值:Subfolder_with_patientID1_1.dcm
    new_filename = f"{patient_folder}_{base_filename}"
    # 4. 生成目标文件完整路径
    dst_path = os.path.join(dir_dst, new_filename)
    # 5. 避免覆盖已存在的文件
    if not os.path.exists(dst_path):
        # 复制文件,若需要移动源文件可替换为 os.rename(file, dst_path)
        shutil.copy2(file, dst_path)

可选优化

如果存在同一患者文件夹下有同名dcm的极端情况,可以在新文件名后添加时间戳/随机数后缀进一步避免重名。

内容的提问来源于stack exchange,提问作者shiva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:42:02