UnicodeDecodeError:'gbk' codec ne peut pas décoder les octets 0x80 en position 0 illégal de la séquence multi-octets

J'utilise python 3.4 avec win 7 64 bits. J'ai couru le code suivant:

      6   """ load single batch of cifar """
      7   with open(filename, 'r') as f:
----> 8     datadict = pickle.load(f)
      9     X = datadict['data']

Le mauvais message est UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence

J'ai changé la ligne 7:

      6   """ load single batch of cifar """
      7   with open(filename, 'r'encoding='utf-8') as f:
----> 8     datadict = pickle.load(f)
      9     X = datadict['data']

Le mauvais message est devenu UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte.

Le message enfin des points pour le Python34\lib\codecs.py dans décoder(auto, entrée, finale).

    311         # decode input (taking the buffer into account)
    312         data = self.buffer + input
--> 313         (result, consumed) = self._buffer_decode(data, self.errors, final)
    314         # keep undecoded input until the next call
    315         self.buffer = data[consumed:]

J'ai modifié le code comme:

      6 """ load single batch of cifar """ 
      7 with open(filename, 'rb') as f:
----> 8 datadict = pickle.load(f) 
      9 X = datadict['data'] 10 Y = datadict['labels']

Bien, ce temps est UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128).

Quel est le problème et comment le résoudre?

Qu'est-ce que la pleine traçabilité en amont de la dernière version? Le pickle la documentation indique que le fichier objet doit retourner octets, de sorte que vous pour ouvrir le fichier d'objet en mode binaire avec 'rb', mais vous avez maintenant un nouveau message d'erreur. Comment était le cornichon fichier créé en premier lieu?
"importer que pickle pickle import numpy comme np import os def load_CIFAR_batch(nom de fichier): """ charger seul lot de l'icra """ avec open(fichier, 'rb') as f: datadict = pickle.charge(f) " C'est comment le cornichon est créé.
Vous pouvez modifier votre post pour ajouter plus d'informations.
Vous me dites comment le cornichon est chargement, pas comment il a été écrit.
le décapant est le standard de python module. Je n'ai pas la toucher.

OriginalL'auteur Haoyu | 2015-01-27