pickle.load

时间:2016-05-20 15:39:49

标签: windows-7 pickle python-3.5 non-ascii-characters

我在使用pickle加载pkl文件时遇到了一些问题。我正在使用Windows 7和Python 3.5.1 64位。 pkl文件是从here下载的。

这是我的代码:

import pickle

# Load model weights and metadata
weightFile = open('vgg16.pkl', 'rb')
d = pickle.load(weightFile)

当我运行它时,我得到了输出

"C:\Program Files\Python35\python.exe" C:/work/lasagne/tutorial/lasagne-tutorial2.py
Traceback (most recent call last):
  File "C:/work/lasagne/tutorial/lasagne-tutorial2.py", line 5, in <module>
    d = pickle.load(weightFile)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbc in position 1: ordinal not in range(128)

Process finished with exit code 1

此错误消息是什么意思?它说有一个字节,acsii编解码器无法解码,但不是一个pkl文件应该是二进制的(因此不包含ascii字符)?

加载文件时我做错了什么?我该怎么做才能解决错误?

1 个答案:

答案 0 :(得分:4)

解决方案在this answer中找到。 pickle文件可能是用Python 2编码的,并且为html { overflow: overlay; } 提供了可选参数pickle.load解决了这个问题。

有效的代码如下所示:

encoding='latin1'