Zastanawiam się, czy istnieje sposób na załadowanie obiektu, który został wytrawiony w Pythonie 2.4 za pomocą Pythona 3.4.
Używałem 2to3 na dużej ilości starszego kodu firmy, aby go zaktualizować.
Po wykonaniu tej czynności podczas uruchamiania pliku pojawia się następujący błąd:
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)
Patrząc na marynowany obiekt będący w sprzeczności, jest to a dict
in a dict
, zawierający klucze i wartości typu str
.
Moje pytanie brzmi: czy istnieje sposób na załadowanie obiektu, pierwotnie wytrawionego w Pythonie 2.4, za pomocą Pythona 3.4?
json
moduł? Być może mógłbyś napisać skrypt 2.4, który odblokowuje obiekt i zapisuje go jako obiekt json, a następnie napisać skrypt 3.4, który odczytuje obiekt json i zapisuje go jako obiekt pickle zgodny z 3.4. Byłaby to jednorazowa operacja, którą wykonujesz na wszystkich swoich plikach marynat.