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

如何解决.pkl文件无法加载、pickle.load报EOFError错误的问题

pickle加载pkl文件抛出EOFError解决方案

该错误本质是pickle读取文件时没有读到符合格式的序列化内容,通常由文件损坏、不完整、读取逻辑错误导致,对应解决方法如下:

  • 第一步:校验目标文件完整性
    运行以下代码检查文件大小:
    import os
    # 输出单位为字节
    print(os.path.getsize("/content/classifier_10class.pkl"))
    
    如果输出为0,说明文件为空,直接重新上传、重新生成完整pkl文件即可,不需要尝试其他修复操作
  • 第二步:优化文件读取写法
    改用上下文管理器操作文件,避免手动关闭文件可能引发的IO异常,标准写法如下:
    import pickle
    filename = "/content/classifier_10class.pkl"
    with open(filename, 'rb') as infile:
        new_dict = pickle.load(infile)
    
  • 第三步:解决协议版本不兼容问题
    如果文件大小正常,可尝试指定encoding参数兼容不同Python版本生成的pkl文件:
    import pickle
    filename = "/content/classifier_10class.pkl"
    with open(filename, 'rb') as infile:
        new_dict = pickle.load(infile, encoding='latin1')
    
  • 第四步:适配多对象序列化的pkl文件
    如果该pkl文件是多次调用pickle.dump()写入了多个对象,需要循环读取直到触发EOFError:
    import pickle
    filename = "/content/classifier_10class.pkl"
    data_list = []
    with open(filename, 'rb') as infile:
        while True:
            try:
                data_list.append(pickle.load(infile))
            except EOFError:
                break
    

如果以上操作都无法解决,说明pkl文件本身内容损坏,需要重新获取完整的源文件。

内容的提问来源于stack exchange,提问作者Mayank Vachhani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:30:02