Utilizo pickle para volcar un archivo en python 3, y utilizo pickle para cargar el archivo en python 2, aparece ValueError.
Entonces, ¿Python 2 pickle no puede cargar el archivo descargado por Python 3 pickle?
Si lo quiero ¿Cómo hacer?
python
python-3.x
python-2.7
pickle
valueerror
Aleeee
fuente
fuente

Respuestas:
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 valor2que Python 2 pueda leer.Verifique el
protocolparámetro enpickle.dump. Su código resultante se verá así.No hay ningún
protocolparámetro enpickle.loadporquepicklepuede determinar el protocolo del archivo.fuente
Pickle utiliza diferentes
protocolspara convertir sus datos en un flujo binario.En Python 2 hay 3 protocolos diferentes (
0,1,2) y el valor predeterminado es0.En Python 3 hay 5 protocolos diferentes (
0,1,2,3,4) y el valor predeterminado es3.Debe especificar en python 3 un protocolo más bajo que
3para poder cargar los datos en python 2. Puede especificar elprotocolparámetro al invocarpickle.dump.fuente
5que también se introdujo en Python 3.8 que no es compatible con versiones anteriores.