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

合并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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:22:56