J'utilise pickle pour dumper un fichier sur python 3 et j'utilise pickle pour charger le fichier sur python 2, le message ValueError apparaît.
Donc, python 2 cornichon ne peut pas charger le fichier vidé par python 3 cornichon?
Si je le veux? Comment faire?
Vous devez écrire les données picklées avec un numéro de protocole inférieur dans Python 3. Python 3 a introduit un nouveau protocole avec le numéro _3
_ (et l’utilise par défaut). valeur de _2
_ lisible par Python 2.
Vérifiez le paramètre protocol
dans pickle.dump
. Votre code résultant ressemblera à ceci.
_pickle.dump(your_object, your_file, protocol=2)
_
Il n'y a pas de paramètre protocol
dans pickle.load
car pickle
peut déterminer le protocole à partir du fichier.
Pickle utilise différents protocols
pour convertir vos données en flux binaire.
Dans python 2, il y a protocoles différents (_0
_, _1
_, _2
_) et la valeur par défaut est _0
_.
Dans python 3, il y a 5 protocoles différents (_0
_, _1
_, _2
_, _3
_, _4
_) et la valeur par défaut est _3
_.
Vous devez spécifier dans python 3 un protocole inférieur à _3
_ pour pouvoir charger les données dans python 2. Vous pouvez spécifier le paramètre protocol
. lors de l'appel de pickle.dump
.