Je me demande s'il existe un moyen de charger un objet qui a été picklé dans Python 2.4, avec Python 3.4.
J'ai utilisé 2to3 sur une grande quantité de code hérité de l'entreprise pour le mettre à jour.
Après avoir fait cela, lors de l'exécution du fichier, j'obtiens l'erreur suivante:
File "H:\fixers - 3.4\addressfixer - 3.4\trunk\lib\address\address_generic.py"
, line 382, in read_ref_files
d = pickle.load(open(mshelffile, 'rb'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1: ordinal
not in range(128)
En regardant l'objet mariné en conflit, c'est un dict
dans a dict
, contenant des clés et des valeurs de type str
.
Ma question est donc la suivante: existe-t-il un moyen de charger un objet, initialement picklé en python 2.4, avec python 3.4?
json
module? Vous pourriez peut-être écrire un script 2.4 qui décoche l'objet et l'enregistre en tant qu'objet json, puis écrire un script 3.4 qui lit l'objet json et l'enregistre en tant qu'objet pickle compatible 3.4. Ce serait une opération unique que vous exécutez sur tous vos fichiers pickle.