error de decapado en python?

Estoy recibiendo este error, y no sé lo que significa. ¿Como puedo solucionar este problema?

Mi código se ve así, lo he usado antes y ha funcionado:

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) 

Este es el mensaje de error:

  File "/home/md202/pmid_editor.py", line 18, in  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' 

Este error exacto se produjo cuando intenté desentrañar (utilizando pickle.loads) una representación de cadena que había almacenado en una base de datos a través de django. Django cambió la representación de caracteres de mi cadena para que pickle.loads(mystring) me lanzara ese error. Cuando agregué una conversión de cadena explícita, estaba bien: pickle.loads( str(mystring) )

EDITAR: viendo los comentarios en la publicación original, creo que esto está relacionado con el problema de la cadena Unicode mencionado. Puse una cadena normal en la base de datos, y django me devuelve una cadena Unicode que produce este error.

Tuve un problema similar, que resultó en KeyError: '\x1f' .

En mi caso, si se seleccionó en un archivo gzip (es decir, gzip.open(fileName,'wb') ), y estaba intentando leerlo con un objeto de archivo normal (es decir: open(fileName,'rb') ) .

tratar

pickle.loads ()

Pickle es binario, así que tienes que leerlo como tal. En lugar de (‘r’) intente usar (‘rb’) leer binario. Además, si escribe el archivo, asegúrese de que también esté grabando el archivo pickle como binario (‘wb’). Eso debería funcionar, espero que ayude.

tal vez deberías probar otro protocolo, prueba pickle.load(in1, 2) !