1

我有一个包含浮动列表的腌制列表的文件。我可以在腌制它的同一台机器上毫无问题地加载列表,但是当我在另一台机器上尝试时,出现以下错误:

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(在尝试解开文件的那个)。我认为不应该仅仅因为这个而有任何不兼容。

4

3 回答 3

1

我认为不应该仅仅因为这个而有任何不兼容。

除非在最近的版本中修复了 2.7.0 中的一些错误。检查他们的更改说明,我个人认为问题 7117是最有可能的罪魁祸首:

问题 #7117:在几乎所有平台上:Python 中的浮点到字符串和字符串到浮点的转换现在已正确舍入。这些转换发生的地方包括: str 表示浮点数和复数;float 和 complex 构造函数;旧式和新式数字格式;使用 marshal、pickle 和 json 对浮点数和复数进行序列化和反序列化;解析 Python 代码中的浮点数和虚数文字;小数到浮点数的转换。

于 2012-05-26T02:13:12.537 回答
1

我遇到了同样的问题并尝试了很多东西,但都是徒劳的。最后,我使用了cPickle,问题就解决了。只需将 'pickle' 替换为 'cPickle' 即可,一切正常。它具有完全相同的方法和参数。

import cPickle

cPickle.dump()

cPickle.load()
于 2014-01-09T11:03:18.823 回答
0

使用 python 2.7.12 无法解开带有列表的 json 文件,即 [{"k": 0},{"k": 1}]

cPickle 没有帮助,json 有:

import json
json.load(open(file))
于 2017-12-27T20:54:31.547 回答