web-dev-qa-db-ja.com

ValueError:サポートされていないpickleプロトコル:3、python2 pickleはpython 3 pickleによってダンプされたファイルをロードできませんか?

Pickleを使用してpython 3にファイルをダンプし、pickleを使用してpython 2にファイルをロードします。ValueErrorが表示されます。

したがって、python 2 pickleはpython 3 pickleによってダンプされたファイルをロードできませんか?

欲しいなら?実行する方法?

82
Aleeee

Python 3で、より小さなプロトコル番号でピクルスデータを記述する必要があります。Python 3では、番号3の新しいプロトコルが導入され(デフォルトとして使用されます)、2の値に戻ります。 Pythonで読むことができます2。

pickle.dumpprotocolparameterを確認してください。結果のコードは次のようになります。

pickle.dump(your_object, your_file, protocol=2)

protocolはファイルからプロトコルを決定できるため、 pickle.load にはpickleparameterがありません。

128
Matthias

Pickleは、異なるprotocolsname__を使用して、データをバイナリストリームに変換します。

python 3でデータを読み込むには、python 3で3より低いプロトコルを指定する必要があります。2.呼び出し時にprotocolname__パラメーターを指定できます pickle.dump

45
enrico.bacis