合并Excel文件遇FileNotFoundError:文件存在却无法定位
解决FileNotFoundError:文件存在却找不到的问题
嘿,我一眼就发现问题所在了!你遇到的FileNotFoundError根源是文件路径不完整——让我帮你一步步修复:
核心问题分析
你用os.listdir('.\meses_31')获取到的只是文件夹里的纯文件名(比如Agosto_2019.xlsx),但当你调用pd.read_excel(name)时,Python会在当前工作目录(不是meses_31子文件夹)里找这个文件,自然就找不到啦。
修正后的完整代码
import os import pandas as pd # 先把目标文件夹路径存为变量,用r前缀避免转义问题 folder_path = r'.\meses_31' files = [file for file in os.listdir(folder_path)] mes_31 = pd.DataFrame() for file in files: # 拼接完整文件路径,这是关键! full_file_path = os.path.join(folder_path, file) print(full_file_path) # 可以打印确认路径是否正确 # 提取年份和月份(这部分逻辑没问题,保留) file_name = file.split('.')[0] mes, año = file_name.split('_') # 用完整路径读取文件 df = pd.read_excel(full_file_path, skiprows=14) # 清理列的逻辑保留 df = df.loc[:, df.columns.notnull()] df = df.loc[:, ~df.columns.str.contains('^Unnamed', na=False)] df = df.loc[:, ~df.columns.str.contains('^None', na=False)] df = df.loc[:, ~df.columns.str.contains('RESUMEN MES', na=False)] # 添加年份和月份列 df['año'] = año df['mes'] = mes # 注意:你原来的代码里写的是df_,这里要改成df,不然会报错 mes_31 = pd.concat([mes_31, df], sort=False) mes_31.head()
额外的小修复
我还帮你修正了一个拼写错误:原来代码里的pd.concat([mes_31, df_], sort=False)里的df_应该是df,不然会报变量未定义的错误。
验证小技巧
如果你还是不确定路径是否正确,可以在循环里打印os.path.exists(full_file_path),如果输出True就说明路径是对的啦。
内容的提问来源于stack exchange,提问作者Juan Felipe Vélez T.
相关产品推荐
相关产品推荐

