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

Windows下Python批量复制名称含指定字符串的目录及内容

Windows下Python批量拷贝名称含指定字符串的文件夹

需求场景

  • 运行环境:Windows系统,基于Python实现文件批量操作
  • 功能目标:将所有名称包含Baseline字符串的文件夹及其内部全部内容,从源磁盘目录拷贝到目标磁盘目录
  • 源目录结构:
Data
|patient01
||001_Baseline_CT
|||dicom1.dicom
|||dicom2.dicom
|||dicom3.dicom
|||...
||001_Recurrence_CT
|patient02
||002_Baseline_CT
|||dicom1.dicom
|||dicom2.dicom
|||dicom3.dicom
|||...
  • 期望输出的目标目录结构:
Output_directory
|001_Baseline_CT
||dicom1.dicom
||dicom2.dicom
||dicom3.dicom
||...
|002_Baseline_CT
||dicom1.dicom
||dicom2.dicom
||dicom3.dicom
||...

原有脚本的错误点

之前编写的脚本运行失败,核心问题如下:

  • 缺少fnmatch模块的导入语句,调用对应匹配方法时会直接抛出异常
  • 对os.walk()的返回结构理解错误:该方法遍历目录时返回的是(当前遍历根路径, 当前路径下的子文件夹列表, 当前路径下的文件列表)三元组,不是单个文件/文件夹路径,不能直接作为路径参数使用
  • 拷贝方法选择错误:匹配到的是文件夹,应该使用目录级拷贝方法,而非单文件拷贝的shutil.copy2
  • 路径拼接逻辑错误,无法正确定位源文件和目标路径
  • 目标目录创建逻辑冗余,不需要每次匹配到内容都判断目录是否存在,提前创建一次即可

修正后可直接运行的代码

import os
import shutil

# 替换为你自己的实际路径,Windows路径前加r避免反斜杠转义
source_root = r"E:\your_source_path\Data"
target_root = r"F:\your_target_path\Output_directory"

# 提前创建目标根目录,exist_ok=True表示目录已存在时不报错
os.makedirs(target_root, exist_ok=True)

# 遍历源目录下所有层级
for current_path, dir_list, file_list in os.walk(source_root):
    # 逐个检查当前层级下的文件夹
    for dir_name in dir_list:
        # 判断文件夹名是否包含目标字符串Baseline
        if "Baseline" in dir_name:
            source_dir = os.path.join(current_path, dir_name)
            target_dir = os.path.join(target_root, dir_name)
            # 如需覆盖目标路径下已存在的同名文件夹,可取消下面两行注释
            # if os.path.exists(target_dir):
            #     shutil.rmtree(target_dir)
            # 递归拷贝整个文件夹及内部所有内容
            shutil.copytree(source_dir, target_dir)
            print(f"拷贝完成:{dir_name}")

使用说明

  • Windows系统填写路径时,务必在路径字符串前加r,比如r"C:\Users\XXX\Data",避免反斜杠被Python识别为转义字符导致路径错误
  • 如果目标目录下已经存在同名的Baseline文件夹,直接运行会报错,可打开代码中注释的覆盖逻辑,自动删除旧文件夹后再拷贝
  • 简单的字符串包含判断直接用Python内置的in关键字即可,不需要额外调用fnmatch,逻辑更简洁运行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:54:18