我有一个包含浮动列表的腌制列表的文件。我可以在腌制它的同一台机器上没有问题地加载列表,但是当我在另一台机器上尝试它时,我收到以下错误:
Traceback (most recent call last):
File "<console>", line 2, in <module>
File "/usr/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/usr/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x00'
两个python版本是2.7.0(在原始机器上)和2.7.2(在试图取消文件的那个上)。我认为不应该因此而存在任何不相容性。
答案 0 :(得分:1)
我认为不应因此而存在任何不相容性。
除非在最近的版本中修复了2.7.0中的某些错误。检查他们的更改说明,我个人认为Issue 7117是最可能的罪魁祸首:
问题#7117:在几乎所有平台上:float-to-string和string-to-float Python中的转换现在已正确舍入。放置这些转化 发生包括:str为浮点数和复数;漂浮和复杂 构造函数;旧式和新式数字格式;序列化和 使用marshal,pickle和json对浮点数和复数进行反序列化; 在Python代码中解析float和imaginary文字;十进制到浮 转换。
答案 1 :(得分:1)
我遇到了同样的问题并尝试了许多事情但都徒劳无功。最后,我使用了cPickle,问题解决了。只需用'cPickle'代替'pickle',一切都运转正常。它有完全相同的方法和args。
import cPickle
cPickle.dump()
cPickle.load()
答案 2 :(得分:0)
使用python 2.7.12无法用列表取消json文件,即 [{&#34; k&#34;:0},{&#34; k&#34;:1}]
cPickle没有帮助,json做了:
import json
json.load(open(file))