Python如何将两个文件夹同名CSV合并为含工作表的Excel工作簿
实现思路
- 以Folder1为核心主目录,遍历目录下所有CSV文件
- 对每个CSV文件,检查Folder2中是否存在完全同名的文件
- 若存在则将两个CSV分别作为独立工作表写入对应名称的xlsx文件,若不存在则仅写入Folder1的CSV内容
- 所有输出的xlsx统一存放至Folder3
依赖安装
需提前安装pandas(CSV/Excel读写)和openpyxl(xlsx写入引擎),执行命令:pip install pandas openpyxl
完整实现代码
import os import pandas as pd # -------------------------- 配置项,替换为你自己的实际路径 -------------------------- folder1 = "替换为Folder1的路径" folder2 = "替换为Folder2的路径" folder3 = "替换为Folder3的输出路径" # ----------------------------------------------------------------------------------- # 自动创建输出目录Folder3,已存在则不报错 os.makedirs(folder3, exist_ok=True) # 遍历Folder1下所有文件 for filename in os.listdir(folder1): # 仅处理CSV格式文件,兼容大小写后缀(如.CSV) if not filename.lower().endswith(".csv"): continue # 提取无后缀的文件名作为最终xlsx的名称 base_filename = os.path.splitext(filename)[0] output_xlsx_path = os.path.join(folder3, f"{base_filename}.xlsx") # 读取Folder1的CSV作为主数据源 df_folder1 = pd.read_csv(os.path.join(folder1, filename)) # 构建工作表映射字典:键为工作表名,值为对应数据 work_sheets = {"Folder1": df_folder1} # 检查Folder2是否存在同名CSV folder2_file_path = os.path.join(folder2, filename) if os.path.exists(folder2_file_path): df_folder2 = pd.read_csv(folder2_file_path) work_sheets["Folder2"] = df_folder2 # 写入xlsx文件 with pd.ExcelWriter(output_xlsx_path, engine="openpyxl") as writer: for sheet_name, df in work_sheets.items(): # index=False 避免写入pandas默认的无意义索引列 df.to_excel(writer, sheet_name=sheet_name, index=False)
常见问题适配
- 编码报错:若读取CSV时提示编码错误,可在
pd.read_csv()中添加encoding="gbk"或encoding="utf-8-sig"参数适配不同编码的CSV文件 - 工作表名自定义:当前默认将来自Folder1、Folder2的CSV分别命名为
Folder1、Folder2工作表,可根据需求修改work_sheets的键值自定义名称 - 大内存文件处理:若CSV文件过大导致内存不足,可在
pd.read_csv()中添加chunksize=10000参数分块读取 - 大小写文件名匹配:当前默认精确匹配文件名大小写,若需忽略大小写匹配Folder2的文件,可自行遍历Folder2文件列表后做小写比对
内容的提问来源于stack exchange,提问作者Hummer
相关产品推荐
相关产品推荐

