无法在python中读取“二进制(应用程序/八位字节流)”文件?

时间:2016-09-16 18:37:06

标签: python-3.x deep-learning

我正在尝试从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)

1 个答案:

答案 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')

还有两件事:

  1. cPickle在Python 3中已重命名为_pickle,但您应该只使用pickle

  2. 将变量命名为与内置类型相同的可怕做法。字典数据类型使用pickle.loads()。请使用其他不明确的名称,例如data