J'utilise le code suivant de ici (avec des modifications mineures):
import _pickle as cPickle
def unpickle(file):
fo = open(file, 'rb')
dict = cPickle.load(fo)
fo.close()
return dict
unpickle('data_batch_1')
Lorsque j'exécute le code, je reçois le texte suivant, à condition que j'utilise 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)
Comment puis-je résoudre ce problème?
Merci.
Puisqu'il échoue sur l'encodage des caractères
Essayez d'utiliser le latin
cPickle.load(file, encoding='latin1')
remplacer:
dict = cPickle.load(fo)
dans unpickle fonctionne avec:
dict = cPickle.load(fo, encoding='latin1')