Python 3.x Python3中的Pickle文件
我尝试在Python3中读取和加载pickle文件Python 3.x Python3中的Pickle文件,python-3.x,pickle,Python 3.x,Pickle,我尝试在Python3中读取和加载pickle文件 import pickle as pickle pickleFileName = 'data/fingerDataSet' + '.pickle' pickleFile = open(pickleFileName, 'rb') data = pickle.load(pickleFile) pickleFile.close() 但是在第data=pickle.load(pickle文件)行中,我遇到了一个奇怪的错误UnicodeDecod
import pickle as pickle
pickleFileName = 'data/fingerDataSet' + '.pickle'
pickleFile = open(pickleFileName, 'rb')
data = pickle.load(pickleFile)
pickleFile.close()
但是在第
data=pickle.load(pickle文件)
行中,我遇到了一个奇怪的错误UnicodeDecodeError:“ascii”编解码器无法对第5位的字节0xc0进行解码:序号不在范围内(128)
pickle不适用于不同的Python版本。
在这种情况下,可能是原始数据位于Python2 str中,其中包含字节,而Python3版本正试图将其作为文本读取,执行隐式解码
您应该做的是在Python 2环境中解压数据,并以不依赖于Python版本的方式保存数据(例如,如果它是图像,请使用PIL库编写PNG文件)文件是如何编写的,它包含什么内容?在unicode中,
0xc0
是字母À。所以问题应该在文件中,我的意思是更接近于什么python对象被pickle并写入文件?我在那里发现了一些托管和上传的文件,所以它应该是一个手指的图像,这在Python2中工作,所以文件是正常的。从不受信任的源取消pickle是一个坏主意。此外,用Python3解压在Python2中处理过的数据也有它自己的问题。