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 valor2
que Python 2 pueda leer.Verifique el
protocol
parámetro enpickle.dump
. Su código resultante se verá así.No hay ningún
protocol
parámetro enpickle.load
porquepickle
puede determinar el protocolo del archivo.fuente
Pickle utiliza diferentes
protocols
para 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
3
para poder cargar los datos en python 2. Puede especificar elprotocol
parámetro al invocarpickle.dump
.fuente
5
que también se introdujo en Python 3.8 que no es compatible con versiones anteriores.