【问题标题】:pickle.load() raising EOFError in Windowspickle.load() 在 Windows 中引发 EOFError
【发布时间】:2013-03-21 03:20:51
【问题描述】:

代码是这样的

with open(pickle_f, 'r') as fhand:
    obj = pickle.load(fhand)

这适用于 Linux 系统,但不适用于 Windows。它显示EOFError。 我必须使用rb 模式才能使其在 Windows 上运行。现在这不适用于 Linux。

为什么会发生这种情况,以及如何解决?

【问题讨论】:

  • 当你创建pickle对象时,你是在什么操作系统上创建它的? Linux 还是 Windows?我不认为你可以在一个系统上创建一个泡菜对象并从其他系统加载它
  • @Rush 代码最初是在 Linux 上编写的。我(新开发人员)在 Windows 中工作......但由于它是一个 Django 项目,我再次在我的系统上生成了所有内容......
  • @Rush,当然可以。只要在两端都以二进制方式打开文件,避免换行不兼容。

标签: python windows file-io newline pickle


【解决方案1】:

在读写泡菜时始终使用b模式(open(f, 'wb')用于写入,open(f, 'rb')用于读取)。要“修复”您已有的文件,请使用 dos2unix 转换其换行符。

【讨论】:

  • 什么意思?为什么你需要r+b
  • 我只是在尝试泡菜文档中提到的一些模式:p 厌倦了设置生产服务器..
  • 我遇到了同样的问题,但这是因为我之前生成的文件在创建时没有b 标志。感谢您的提示!
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2016-08-31
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
相关资源
最近更新 更多