You need to enable JavaScript to run this app. Python读取图片时报错OSError: Initializing from file failed如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Python读取图片时报错OSError: Initializing from file failed如何解决?

问题排查与解决方案

核心报错根本原因

你触发OSError: Initializing from file failed的核心原因是**pd.read_csv()方法传入的是文件夹路径,而非单个CSV文件路径**:
你代码中调用pd.read_csv()时传入的路径是C:\\Users\\sanch\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\tensorflow\\tensorflow-for-poets-2-master\\tf_files\\test_data,从你前面写的os.walk遍历该路径的逻辑也能确认这是一个存放多个文件的目录,read_csv不支持直接读取文件夹。

其他可预见的代码错误

除了文件读取问题,你的代码还存在以下问题,修复文件问题后会依次触发:

  • 未定义test_data变量就直接调用,会报变量未定义错误
  • 重复三次定义create_model函数,最后一次定义会覆盖前两次的逻辑
  • Keras API调用错误:model.complete应为model.compile;tf.keras.KerasClassifier是错误引用,正确引用路径是tensorflow.keras.wrappers.scikit_learn.KerasClassifier;GridSearchCV属于sklearn库而非Keras库;参数名build_nf应为build_fn、ephochs应为epochs
  • 模型训练代码写在create_model函数定义内、return语句之后,属于死代码永远不会执行,且函数定义阶段调用还未加载的X_train变量会报错

可行修复步骤

第一步:修复文件读取问题

根据你的实际场景二选一即可:

  1. 如果你要读取的是目录下单个指定CSV文件,直接把路径替换为具体CSV文件的完整路径,示例如下:
# 替换为你实际的训练集CSV文件名
train_data = pd.read_csv("C:\\Users\\sanch\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\tensorflow\\tensorflow-for-poets-2-master\\tf_files\\test_data\\train.csv", delimiter=',', nrows=nRowsRead)
# 补充加载测试集的代码,替换为实际测试集CSV文件名
test_data = pd.read_csv("C:\\Users\\sanch\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\tensorflow\\tensorflow-for-poets-2-master\\tf_files\\test_data\\test.csv", delimiter=',', nrows=nRowsRead)

如果路径仍解析失败,可以加engine='python'参数规避C引擎的路径兼容问题:pd.read_csv(xxx, engine='python')
2. 如果你要读取目录下所有CSV文件合并为训练集,使用如下代码替换原有pd.read_csv部分:

import glob
# 匹配目录下所有csv文件
csv_file_list = glob.glob("C:\\Users\\sanch\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\tensorflow\\tensorflow-for-poets-2-master\\tf_files\\test_data\\*.csv")
# 合并所有csv为一个DataFrame
train_data = pd.concat([pd.read_csv(file, delimiter=',') for file in csv_file_list], ignore_index=True)

第二步:修复其他逻辑错误

  • 保留一个create_model函数即可,删除另外两个重复的函数定义
  • 把create_model函数内的model.complete修改为model.compile
  • 在代码顶部补充导入语句:
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
  • 修正GridSearch相关代码的错误:把tf.keras.KerasClassifier改为KerasClassifier、build_nf改为build_fn、ephochs改为epochs、tf.keras.GridSearchCV改为GridSearchCV
  • 把所有模型训练、网格搜索的代码移动到if __name__ == '__main__'块内,放在数据集加载完成的代码之后,删除create_model函数内return之后的死代码

内容的提问来源于stack exchange,提问作者Александр Трегубов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:45:04