使用pandas read_excel读取CSV报FileNotFoundError的问题咨询
该
FileNotFoundError的排查与解决方案 - 首先需要纠正一个认知偏差:你观察到的“代码无法识别excel类文件”和当前报错没有关联,
FileNotFoundError是操作系统层面无法定位到你传入路径对应的实体文件,不管你用pandas读txt、csv还是xlsx,只要路径指不到真实文件就会报这个错,和pandas本身支持的文件格式无关。
1. 优先排查文件名/路径的真实性问题
Windows系统默认会隐藏已知类型的文件扩展名,这是这类报错最高发的诱因:
- 手动打开文件资源管理器,逐段把你代码里的路径
C:\Users\John\Desktop\Python_work\stock\zen\OutputFiles\粘贴到地址栏回车,确认能不能跳转到目标文件夹 - 检查目标文件夹里的文件实际名称:如果资源管理器里看到的文件名是
Test_file.csv,但打开资源管理器的“文件扩展名显示”开关后,很可能发现真实文件名是Test_file.csv.txt、Test_file.csv.xlsx——你看到的.csv是手动重命名时加在主文件名里的内容,系统隐藏了真实的文件后缀,自然匹配不到你代码里写的路径。之前读txt能成功,就是因为txt文件的真实后缀和显示名称完全一致,不会踩这个坑。
2. 路径写法的兼容性优化
- 你现在用双反斜杠做路径转义的写法本身是正确的,但可以换更不易出错的写法降低出错概率:
- 给路径加前缀
r变成原始字符串,避免路径内出现可被转义的字符导致路径偏移,比如r"C:\Users\John\Desktop\Python_work\stock\zen\OutputFiles\Test_file.csv" - 直接用正斜杠写全路径,Windows系统原生支持这种写法,不需要手动转义,比如
"C:/Users/John/Desktop/Python_work/stock/zen/OutputFiles/Test_file.csv"
- 给路径加前缀
- 你之前尝试把文件放到和代码相同的目录下却依然报错,大概率是因为Python解释器的实际工作目录和你以为的代码所在目录不一致。可以在你原有报错代码的最前面加几行校验代码,定位真实的路径解析结果:
import os # 打印Python解释器当前的实际工作目录 print("当前工作目录:", os.getcwd()) target_path = r"C:\Users\John\Desktop\Python_work\stock\zen\OutputFiles\Test_file.csv" # 校验目标路径对应的文件是否真实存在 print("目标文件是否存在:", os.path.exists(target_path))- 如果打印的当前工作目录和你存放代码的路径不一致,那你之前“把文件放同目录”的操作其实是把文件放到了错误的位置
- 如果
os.path.exists()的返回值是False,就说明你填写的路径对应的位置根本没有目标文件
3. 读取代码的冗余优化
- 你代码里导入的
from pandas import ExcelFile和读取csv的操作没有任何关联,属于多余代码,可以删掉 - 确认路径正确后,读取csv文件可以换用pandas专门的csv读取方法
pd.read_csv(),既可以减少不必要的格式兼容开销,也能排除因为xlsx格式依赖库缺失导致的连带问题(这类依赖问题的报错一般是ImportError,不会触发FileNotFoundError)
内容的提问来源于stack exchange,提问作者zzzperson
相关产品推荐
相关产品推荐

