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

求助:基于关联表实现Python批量复制CSV到对应站点文件夹

批量按规则复制CSV文件解决方案

前提准备

  • 安装pandas库(用来读取关联表):在命令行执行 pip install pandas
  • 确认三个核心路径,后续代码里需要替换成你实际的路径:
    • 关联表文件(比如命名为site_mapping.csv)的路径
    • 存放源CSV的Data文件夹路径
    • 目标文件夹Main folder路径

完整代码(带详细注释)

# 导入所需库:pandas读关联表,os处理路径和文件夹,shutil做文件复制
import pandas as pd
import os
import shutil

# ---------------------- 请修改这里的路径为你实际的路径 ----------------------
mapping_file_path = "site_mapping.csv"  # 关联表的路径
data_folder = "Data"                   # 源CSV所在文件夹
main_folder = "Main folder"            # 目标站点文件夹的上级目录
# -------------------------------------------------------------------------

# 读取关联表,构建站点到序列号的映射字典
# 最终得到类似 {'site_1': ['123', '456', '789'], ...} 的结构
site_serial_map = {}
df = pd.read_csv(mapping_file_path)
for _, row in df.iterrows():
    site = row['siteName']
    serial = row['serialNumber']
    if site not in site_serial_map:
        site_serial_map[site] = []
    site_serial_map[site].append(str(serial))  # 转成字符串避免和文件名格式不匹配

# 遍历每个站点,处理文件复制
for site_name, serials in site_serial_map.items():
    # 构建当前站点的目标文件夹路径
    target_site_folder = os.path.join(main_folder, site_name)
    # 如果目标文件夹不存在,创建它
    if not os.path.exists(target_site_folder):
        os.makedirs(target_site_folder)
    
    # 遍历当前站点对应的所有序列号
    for serial in serials:
        # 源文件路径:Data文件夹下的 {serial}.csv
        source_file = os.path.join(data_folder, f"{serial}.csv")
        # 目标文件路径:站点子文件夹下的 {serial}.csv
        target_file = os.path.join(target_site_folder, f"{serial}.csv")
        
        # 检查源文件是否存在,避免找不到文件报错
        if os.path.exists(source_file):
            # 检查目标文件是否已存在,不存在才复制
            if not os.path.exists(target_file):
                shutil.copy(source_file, target_file)
                print(f"已复制:{source_file} -> {target_file}")
            else:
                print(f"跳过(已存在):{target_file}")
        else:
            print(f"警告:源文件不存在:{source_file}")

print("文件复制任务完成!")

代码关键点说明

  • 路径处理:用os.path.join()拼接路径,避免不同操作系统(Windows/macOS/Linux)的路径分隔符问题
  • 映射构建:把关联表转换成字典,方便快速找到每个站点对应的所有文件序列号
  • 跳过已存在文件:通过os.path.exists(target_file)判断,只复制新增文件
  • 容错处理:检查源文件是否存在,避免因文件缺失导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:38