如何实现Python脚本自动批量处理多组跨文件夹Excel文件对?
批量处理成对Excel文件的Python实现
核心思路
遍历其中一个文件夹的Excel文件,提取文件的配对标识(如示例中的_1、_2),自动匹配另一个文件夹中对应的文件,重复执行读取、左连接合并、保存结果的流程,实现批量自动化处理。
完整实现代码
import pandas as pd import os from glob import glob # 定义文件夹路径(根据实际路径修改) folder_a = "folderA" folder_b = "folderB" output_folder = "merged_results" # 创建输出文件夹(不存在则自动创建) os.makedirs(output_folder, exist_ok=True) # 获取folderA中所有Excel文件的完整路径 a_files = glob(os.path.join(folder_a, "*.xlsx")) for a_file_path in a_files: # 提取文件名(移除路径和后缀) a_file_name = os.path.basename(a_file_path).replace(".xlsx", "") # 提取配对标识(针对fileA_1这类格式,分割后取最后一段) pair_id = a_file_name.split("_")[-1] # 构造folderB中对应文件的路径 b_file_name = f"fileB_{pair_id}.xlsx" b_file_path = os.path.join(folder_b, b_file_name) # 检查对应文件是否存在,避免报错 if not os.path.exists(b_file_path): print(f"警告:未找到对应文件 {b_file_path},跳过当前配对") continue # 读取Excel文件为DataFrame df_a = pd.read_excel(a_file_path) df_b = pd.read_excel(b_file_path) # 执行左连接合并操作 merged_df = df_a.merge(df_b, how="left", indicator=True) # 打印当前合并结果的行数(可选,用于进度追踪) print(f"配对 {pair_id} 合并完成,共 {merged_df.shape[0]} 行") # 保存合并结果到输出文件夹 output_file_path = os.path.join(output_folder, f"merged_{pair_id}.xlsx") with pd.ExcelWriter(output_file_path) as writer: merged_df.to_excel(writer, sheet_name="comparison", index=False)
关键细节说明
- 文件匹配逻辑:针对
fileA_*.xlsx和fileB_*.xlsx的命名格式,通过分割文件名提取*部分作为配对标识。如果你的文件名格式不同,只需修改b_file_name的构造规则即可适配。 - 容错处理:增加文件存在性检查,避免因缺失对应文件导致脚本中断。
- 结果管理:用独立的输出文件夹存放合并结果,避免与原文件混淆。
- 扩展性:如果需要将所有合并结果存入同一个Excel的不同工作表,只需将
pd.ExcelWriter的路径改为固定文件名,循环中指定不同的工作表名称即可。
内容的提问来源于stack exchange,提问作者Rfl
相关产品推荐
相关产品推荐

