erreur de décapage en python?
J'obtiens cette erreur, et je ne sais pas ce que cela signifie. Comment puis-je résoudre ce problème?
mon code ressemble à ça, je l'ai déjà utilisé et ça a fonctionné:
parentdir = os.getcwd()
dirlist = os.listdir(parentdir)
for dir in dirlist:
if not dir == "pubs_edits": continue
if os.path.isdir(os.path.join(parentdir, dir)):
os.chdir(os.path.join(parentdir, dir))
file_list = os.listdir(os.path.join(parentdir, dir))
for f in file_list:
in1 = open(f, 'r')
dict2 = pickle.load(in1)
C'est le message d'erreur:
File "/home/md202/pmid_editor.py", line 18, in <module>
dict2 = pickle.load(in1)
File "/usr/lib/python2.5/pickle.py", line 1370, in load
return Unpickler(file).load()
File "/usr/lib/python2.5/pickle.py", line 858, in load
dispatch[key](self)
KeyError: '\x00'
source d'informationauteur marsx | 2011-06-13
Vous devez vous connecter pour publier un commentaire.
Cette erreur s'est produite pour moi quand j'ai essayé de unpickle (à l'aide de cornichon.les charges) une représentation de chaîne que j'avais stocké dans une base de données via django. Django changé le charactee représentation de ma chaîne, de sorte que
pickle.loads(mystring)
m'a jeté cette erreur. Quand j'ai ajouté explicitement la conversion de chaîne de caractères, c'était bien:pickle.loads( str(mystring) )
EDIT: en regardant les commentaires sur le post original, je pense que c'est lié à la chaîne unicode problème mentionné. J'ai mis un normal chaîne de caractères dans la base de données, et django me donne de nouveau une chaîne unicode qui produit cette erreur.
J'ai eu un problème similaire, résultant en
KeyError: '\x1f'
.Dans mon cas, si c'était marinés à un fichier gzip (ie:
gzip.open(fileName,'wb')
), et j'ai essayé de le lire avec un fichier normal de l'objet (c'est à dire:open(fileName,'rb')
).Cornichon est binaire, de sorte que vous avez à lire comme tel. Au lieu de ('r'), essayez d'utiliser ('rb') lire binaires. Aussi, si votre écriture du fichier de vous assurer que vous wrting le cornichon fichier binaire ('wb'). Cela devrait fonctionner, j'espère que ça aide.
essayer
cornichon.charges()
peut-être que vous devriez essayer un autre protocole essayer
pickle.load(in1, 2)
!