ValueError: protocolo pickle no compatible: 3, ¿el pickle python2 no puede cargar el archivo descargado por el pickle python 3?


Respuestas:


158

Debes escribir los datos en escabeche con un número de protocolo más bajo en Python 3. Python 3 introdujo un nuevo protocolo con el número 3(y lo usa como predeterminado), así que vuelve a un valor 2que Python 2 pueda leer.

Verifique el protocolparámetro en pickle.dump. Su código resultante se verá así.

pickle.dump(your_object, your_file, protocol=2)

No hay ningún protocolparámetro en pickle.loadporque picklepuede determinar el protocolo del archivo.


54

Pickle utiliza diferentes protocolspara convertir sus datos en un flujo binario.

Debe especificar en python 3 un protocolo más bajo que 3para poder cargar los datos en python 2. Puede especificar el protocolparámetro al invocar pickle.dump.


10
Solo para referencia futura, aparentemente hay un protocolo 5que también se introdujo en Python 3.8 que no es compatible con versiones anteriores.
Farzad Abdolhosseini

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.