我正在尝试从CIFAR-10数据集中读取数据文件。我已下载但我无法读取文件。 我用来读取文件的代码。
def unpickle(file):
print(file)
import pickle
fo = open(file, 'rb')
dict = cPickle.load(fo)
fo.close()
return dict
file = 'data_batch_1'
显示错误“
Traceback (most recent call last):
File "basiccnn.py", line 28, in <module>
data1 = unpickle(file)
File "basiccnn.py", line 23, in unpickle
dict = cPickle.load(fo)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
答案 0 :(得分:0)
自从你获得:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
您似乎遇到了编码问题。根据{{3}},使用默认编码 ASCII ,这可能是您收到该错误的原因。将编码设置为&#34; bytes&#34; 可修复此问题:
data = pickle.load(fo, encoding='bytes')
还有两件事:
cPickle
在Python 3中已重命名为_pickle
,但您应该只使用pickle
。
将变量命名为与内置类型相同的可怕做法。字典数据类型使用pickle.loads()。请使用其他不明确的名称,例如data
。