Python 2.4で、Python 3.4を使用してpickle化されたオブジェクトをロードする方法があるかどうか疑問に思っています。
私はそれを最新の状態にするために、会社の大量のレガシーコードで2to3を実行しています。
これを行った後、ファイルを実行すると次のエラーが発生します。
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)
競合しているpickle化されたオブジェクトを見ると、これはのdict
でありdict
、キーとtypeの値が含まれていますstr
。
だから私の質問は:もともとPython 2.4でピクルされたオブジェクトをPython 3.4でロードする方法はありますか?
json
モジュールがありますか?おそらく、オブジェクトをunpickleしてjsonオブジェクトとして保存する2.4スクリプトを記述し、jsonオブジェクトを読み取って3.4互換のpickleオブジェクトとして保存する3.4スクリプトを記述できます。これは、すべてのpickleファイルに対して実行する1回限りの操作です。