Python如何合并多个不同目录下的Excel文件?
跨目录多Excel文件合并解决方案
报错根因
你遇到的[Errno 2 No such file or directory]报错90%的概率是直接使用os.walk返回的文件名读取文件,没有拼接对应子目录的路径:os.walk返回的文件名仅为文件本身的名称,不带上级目录路径,脚本默认会在当前执行目录下查找对应文件,自然找不到子文件夹中存储的Excel。
完整实现代码
核心逻辑是遍历所有子目录时,拼接子目录路径和文件名得到完整的文件访问路径,再调用你原有单文件夹下的合并逻辑即可,示例代码如下:
import os import pandas as pd # 替换为你自己的Big Folder实际路径,优先使用绝对路径避免出错 root_dir = "/your/actual/path/to/Big Folder" merge_result = [] # os.walk遍历所有层级子目录 for current_dir, _, file_list in os.walk(root_dir): for file_name in file_list: # 过滤只处理xls格式文件,需要兼容xlsx可补充or file_name.endswith(".xlsx") if file_name.endswith(".xls"): # 拼接得到完整文件路径,这是解决路径报错的核心步骤 full_path = os.path.join(current_dir, file_name) # 这里可以替换为你原有单文件夹下的Excel读取、处理逻辑 df = pd.read_excel(full_path) merge_result.append(df) # 合并所有读取到的表格数据 final_df = pd.concat(merge_result, ignore_index=True) # 输出合并后的文件,路径可自行修改 final_df.to_excel("./merged_all.xlsx", index=False)
注意事项
- 运行前请确保安装了依赖库:
pip install pandas openpyxl xlrd - 如果不同Excel的表头不一致,可自行调整
pd.concat的参数,或读取后先做表头对齐、字段筛选再合并 - 如果你原有合并逻辑有特殊处理(比如跳过表头行、仅读取指定Sheet、只取指定列等),仅需替换代码中Excel读取部分的逻辑即可,路径拼接的逻辑无需改动
- 优先使用绝对路径定义
root_dir,可以避免脚本执行目录变化导致的路径找不到问题
内容的提问来源于stack exchange,提问作者codextrmz
相关产品推荐
相关产品推荐

