python 3.0 pickle.load TypeError

El siguiente código:

with open("J:\\python\\.data") as data:
    self.data=pickle.load(data)

generó el siguiente error:

File "J:\python\code.py", line 50, in get_events
    self.data=pickle.load(data)
TypeError: 'str' does not support the buffer interface

Leí que podría tener que codificarlo, probé utf-8 y no funcionó. ¿Cuáles son los otros formatos? ¿Estoy yendo en la dirección correcta?

Olvidé mencionar que el objeto en .data es una lista y se decapado usando el protocolo 2. var self.data ya es una lista

preguntado el 30 de junio de 12 a las 23:06

¿Qué hay en ".datos". ¿Cuál es el artículo que se está decapando? -

LookupError: codificación desconocida: binario -

el artículo que se está decapando es un artículo previamente decapado usando el protocolo 2 -

2 Respuestas

with open("J:\\python\\.data", "rb") as data:
    self.data=pickle.load(data)

Como se señaló en el pickle documentos:

Esto toma un archivo binario para leer un flujo de datos de pickle.

Por lo tanto, debe abrirlo con el modo "rb" para binario.

Respondido el 30 de junio de 12 a las 23:06

Puede ser entonces que el objeto que descargaste no sea compatible con Python 3.x. (Esta es también la razón por la cual puede ser preferible volcar a formatos independientes del idioma). - Amber

Creo que eso es todo, porque ejecuté esto en python 2.7 y luego obtuve python 3. - user1493601

En mi caso, estaba tratando de abrir un objeto en escabeche bajo una versión anterior de Python (2.7).

Una vez que lo había vuelto a encurtir, todo estaba bien.

Respondido el 19 de junio de 14 a las 14:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.