Я использую следующий код из здесь (с незначительными правками):

import _pickle as cPickle 

def unpickle(file):
    fo = open(file, 'rb')
    dict = cPickle.load(fo)
    fo.close()
    return dict

unpickle('data_batch_1')

Когда я запускаю код, я получаю следующее при условии, что использую Python 3.5.2:

Traceback (most recent call last):
  File "open_batch.py", line 10, in <module>
    unpickle('data_batch_1')
  File "open_batch.py", line 5, in unpickle
    dict = cPickle.load(fo)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)

Как я могу исправить эту проблему?

Спасибо.

7
Simplicity 22 Мар 2017 в 03:54

2 ответа

Лучший ответ

Так как не получается кодировка символов

Попробуйте использовать латинский

cPickle.load(file, encoding='latin1')
15
Robert I 22 Мар 2017 в 00:58

Заменить :

dict = cPickle.load(fo)

В функции unpickle с помощью:

dict = cPickle.load(fo, encoding='latin1')
1
ChaosPredictor 27 Мар 2018 в 12:51