Ich frage mich, ob es eine Möglichkeit gibt, ein in Python 2.4 eingelegtes Objekt mit Python 3.4 zu laden.
Ich habe 2to3 mit einer großen Menge von Firmen-Legacy-Code ausgeführt, um ihn auf den neuesten Stand zu bringen.
Nachdem ich dies getan habe, erhalte ich beim Ausführen der Datei den folgenden Fehler:
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)
Wenn Sie das in Konflikt stehende eingelegte Objekt betrachten, ist es ein dict
in a dict
, das Schlüssel und Werte vom Typ enthält str
.
Meine Frage lautet also: Gibt es eine Möglichkeit, ein ursprünglich in Python 2.4 eingelegtes Objekt mit Python 3.4 zu laden?
json
Modul? Vielleicht könnten Sie ein 2.4-Skript schreiben, das das Objekt entpickt und als JSON-Objekt speichert, und dann ein 3.4-Skript schreiben, das das JSON-Objekt liest und es als 3.4-kompatibles Pickle-Objekt speichert. Dies wäre eine einmalige Operation, die Sie für alle Ihre Pickle-Dateien ausführen.