- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我尝试使用 Python 的 pickle 将一些对象保存到 Windows 7 上的磁盘。我正在使用下面的代码,它在几乎任何任意对象上都会失败(saveobj 的内容并不重要,无论如何它都会失败)。下面是我的测试代码:
import pickle, os, time
outfile = "foo.pickle"
f = open(outfile, 'wb')
p = pickle.Pickler(f, -1)
saveobj = ( 2,3,4,5,["hat", {"mat": 6}])
p.save(saveobj)
#pickle.dump(saveobj, f)
print "done pickling"
f.close()
g = open(outfile, 'rb')
tup = pickle.load(g)
g.close()
print tup
当我运行它时,我得到以下输出/错误:
done pickling
Traceback (most recent call last):
File "C:\Users\user\pickletest2.py", line 13, in <module>
tup = pickle.load(g)
File "C:\Python26\lib\pickle.py", line 1370, in load
return Unpickler(file).load()
File "C:\Python26\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python26\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
但是,如果我使用 pickle.dump() 而不是 Pickler 对象,它就可以正常工作。我使用 Pickler 的原因是我想对其进行子类化,以便在 pickle 之前可以对每个对象执行操作。
有人知道为什么我的代码会这样做吗?我的搜索表明,没有“wb”和“rb”通常会导致这种情况,就像没有 f.close() 一样,但我两者都有。使用-1作为协议(protocol)有问题吗?我想保留它,因为它可以处理定义自己的 __slots__
方法的对象,而无需定义 __getstate__
方法。
最佳答案
Pickler.save()
是一个较低级别的方法,您不应该直接调用它。
如果您调用 p.dump(saveobj)
而不是 p.save(saveobj)
,它会按预期工作。
也许应该将其称为_save
以避免混淆。但 dump
是文档中描述的方法,它与模块级 pickle.dump
完全匹配。
关于使用 Pickler 时出现 Python Pickle EOFerror(但不使用 pickle.dump()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617348/
我正在尝试 pickle 元胞自动机类的实例,但出现此错误: RuntimeError: maximum recursion depth exceeded while calling a Python
我知道为了可picklable,类必须覆盖__reduce__方法,并且它必须返回字符串或元组。 这个功能是如何工作的?__reduce__ 的具体用法是什么?什么时候会用到? 最佳答案 当您尝试pi
要取消使用多次 pickler.dump 调用保存的数据,我们需要对 unpickler.load 进行相同数量的调用。一种快速但肮脏的方法是使用 try except block ,如下所示: wi
我正在尝试编写一个自定义的 SPickler/Unpickler 对来解决当前 scala-pickling 的一些限制。 我试图pickle 的数据类型是一个case 类,其中一些字段已经有自己的S
我想生成XML picklers对于 XSD file 。它似乎是一个可能已经存在的有用工具。是吗? 最佳答案 HaXml确实有一个从 DTD 生成 Haskell 数据类型的工具和一个从 XSD 生
因此,我尝试使用 Python 的 pickle 将一些对象保存到 Windows 7 上的磁盘。我正在使用下面的代码,它在几乎任何任意对象上都会失败(saveobj 的内容并不重要,无论如何它都会失
我是一名优秀的程序员,十分优秀!