Python 3.6中反序列化文件时出错

4

我在Python和序列化方面都比较新手。在一次数据挑战的面试中,我收到了一个以pickle格式保存的数据集,但是我在反序列化时遇到了问题。他们告诉我这个文件是在Mac上使用Python 3.7进行序列化的,而我使用的是Python 3.6.5。

我使用了以下代码:

import pickle

infile = open('test_data.pickle', 'rb')

pickle.load(infile)

但是我接下来收到了这个错误:

"无效的加载密钥 \xef"

我已经在网上阅读并尝试像pickle.load(infile, encoding='bytes')或相同但使用'latin1'而不是bytes的方法,但我没有在任何其他堆栈交换问题中找到解决方案,因此非常感谢您的帮助!

谢谢!

伊莎贝尔


作为未来的一面镜子,从未知来源反序列化数据非常危险。 - Jdeep
1个回答

0

我遇到了和您描述的一样的错误。 我将这个文件删除并重新创建,问题得到解决。

import pickle

outfile = open('test_data.pickle', 'wb')
pickle.dump({}, outfile)
outfile.close()
infile = open('test_data.pickle', 'rb')
print(pickle.load(infile))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接