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

如何批量将多文件夹中的CSV数据迁移至对应XLSX文件?

批量迁移CSV数据到对应XLSX文件

问题分析

你之前的代码错误在于直接将带占位符{}的字符串传入load_workbook和open函数,这些占位符没有被实际路径填充,而且缺少遍历子文件夹的逻辑,导致无法定位到具体文件。

解决方案

使用os模块遍历主目录下的所有子文件夹,在每个子文件夹中找到唯一的CSV和XLSX文件,再执行数据迁移操作。代码如下:

from openpyxl import load_workbook
import csv
import os

# 替换为你的实际主目录路径
main_dir = "D:\\local\\test"

# 遍历主目录下的所有子文件夹
for subdir in os.listdir(main_dir):
    subdir_path = os.path.join(main_dir, subdir)
    # 仅处理文件夹类型的子项
    if not os.path.isdir(subdir_path):
        continue
    
    # 在当前子文件夹中定位CSV和XLSX文件
    csv_file = None
    xlsx_file = None
    for file in os.listdir(subdir_path):
        file_full_path = os.path.join(subdir_path, file)
        if file.endswith(".csv"):
            csv_file = file_full_path
        elif file.endswith(".xlsx"):
            xlsx_file = file_full_path
    
    # 确认找到完整的文件对后执行迁移
    if csv_file and xlsx_file:
        wb = load_workbook(xlsx_file)
        ws = wb.active
        # 添加编码参数避免部分CSV文件出现编码错误,可根据实际情况调整
        with open(csv_file, 'r', encoding='utf-8') as f:
            for row in csv.reader(f):
                ws.append(row)
        wb.save(xlsx_file)
        print(f"已完成 {csv_file} 到 {xlsx_file} 的数据迁移")
    else:
        print(f"子文件夹 {subdir_path} 中未找到完整的CSV和XLSX文件对")

代码说明

  • os.listdir(main_dir):获取主目录下的所有子项(文件夹和文件)
  • os.path.isdir(subdir_path):过滤出仅文件夹类型的子项进行处理
  • 通过文件后缀名.csv和.xlsx在子文件夹内定位目标文件
  • 复用你原有的单文件迁移逻辑,替换为动态获取的文件路径
  • 新增encoding='utf-8'参数,避免部分含特殊字符的CSV文件出现读取错误

注意事项

  • 如果子文件夹中存在多个CSV或XLSX文件,代码会取最后一个匹配的文件;若需要按文件名对应匹配,可添加文件名关联逻辑
  • 确保openpyxl模块已安装,未安装可执行pip install openpyxl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:50:30