Python “反序列化”;泡菜“;文件

Python “反序列化”;泡菜“;文件,python,python-3.x,pickle,python-unicode,Python,Python 3.x,Pickle,Python Unicode,我的代码是: import _pickle with open('items_10000_matrix.pickle', 'rb') as f: data_new = _pickle.load(f) 但出现了一个错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 212: ordinal not in range(128) 我正在使用Windows10+Python3.5和VSToolsfo

我的代码是:

import _pickle
with open('items_10000_matrix.pickle', 'rb') as f:
    data_new = _pickle.load(f)
但出现了一个错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 212: ordinal not in range(128)

我正在使用Windows10+Python3.5和VSToolsforPython

尝试使用
\u pickle.load(f,encoding='bytes')


顺便说一句,在Python3中,没有理由显式地导入
\u pickle
而不是
pickle
,因为如果可用,它将自动切换到C版本。请参见问题的公认答案

我被告知使用python 2而不是python 3,而且效果很好。仍然不知道python3的解决方案

你说做一个
导入pickle
失败了-它到底是如何失败的?您不应该/不需要使用
\u pickle
..@ninjappy抱歉,它不再失败,这只是我的previus操作…@martineau抱歉,但是:需要像object这样的字节,而不是'str'OK,尝试使用
\u pickle.load(f,encoding='bytes'))
@Vladislav:pickle文件唯一真正有用的功能是存储可稍后读取的pickle数据。您可以在一个容器中存储多个项目,但除非它们都在某种容器对象(如列表或字典)中,否则您必须分别取消选中(加载)每个项目。弗拉迪斯拉夫:我觉得不接受我的回答有点不公平。如果您没有明确说明您正在使用Python3.5(并将问题标记为Python-3.x),我可能会建议切换到Python2。对于一个人来说,像这样轻松地从一个切换到另一个也是相当不寻常的。