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

Utilizo pickle para volcar un archivo en python 3, y utilizo pickle para cargar el archivo en python 2, aparece el ValueError.

Por lo tanto, Python 2 pickle no puede cargar el archivo volcado por Python 3 Pickle?

Si lo quiero? ¿Cómo hacer?

Debería escribir los datos decapados 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 vuelva a un valor de 2 que puede leer Python 2.

Compruebe el parámetro de protocol en pickle.dump . Su código resultante se verá así.

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

No hay ningún parámetro de protocol en pickle.load porque pickle puede determinar el protocolo a partir del archivo.

Pickle utiliza diferentes protocols para convertir sus datos a una secuencia binaria.

  • En Python 2 hay 3 protocolos diferentes ( 0 , 1 , 2 ) y el valor predeterminado es 0 .

  • En Python 3 hay 5 protocolos diferentes ( 0 , 1 , 2 , 3 , 4 ) y el valor predeterminado es 3 .

Debe especificar en python 3 un protocolo inferior a 3 para poder cargar los datos en python 2. Puede especificar el parámetro de protocol al invocar pickle.dump .