2011-09-04 7 views
1

私は多くのオブジェクトを含むpythonクラスを持っています - いくつかはデータ構造体(listsdictsなど)であり、いくつかは他のクラス(他のデータ構造体も含む)へのハンドラです。そこserializeへの道があるいくつかの必要なオブジェクトのデータおよびバイナリファイルに(ONLYそれらを)保存する場合はむしろ、クラス全体&その内容を保存するためにpickleを使用するよりもPython - オブジェクトをバイナリファイルに保存するには?

、私は不思議でしたか?例えば

、私は、次の2 Pythonオブジェクトを持っていることとします

myList = [1, 2, 3, 4, 5] 
myDict = {'a' : 14, 'b' : 5, 'c' : 65} 

バイナリファイルにこれらpythonオブジェクトの両方の内容を保存するための最良の方法は何ですか?理想的には、オブジェクトと同じバイナリファイルに両方のオブジェクトを保存し、後でそのデータを読み込むことができます。

+0

[struct](http://docs.python.org/library/struct.html)モジュールを使用して何かを構築しようとすることはできますが、私が知っている限りリストやディクテーションを保存することはできません。 – Julian

+0

リストや辞書と同じくらい単純なのであれば、[Pythonでファイル/ストリームから複数のJSONオブジェクトを読み込むにはどうすればいいですか?](http://stackoverflow.com/questions/6886283/i-can-i-read-multiple-json-objects-from-a-file-stream-in-python)を使用しています。 – agf

+0

agf - ありがとう、私は見てみましょう... – user3262424

答えて

5

次に、それらのコンテナクラス(またはタプル、またはタプルなど)を作成し、それをピクチャします(または、元のクラスを修正して、必要な部分だけをピクルスします)。 pickleシリアライゼーションであり、これを行うための標準的なPythonの仕組みです。したがって、必要な場合を除きます。異なる言語間のより多くの相互運用性は、それに固執する。

+0

ありがとう。 'pickle'は経済的な方法でデータを保存しますか? (私は大きいobjecsを扱うことを期待します) – user3262424

+0

@ user3262424:プロトコル2を使用して、現在最もコンパクトで効率的なフォーマットです。 –

+0

Python 3にはさらに効率的なプロトコル3があります。一般に、プロトコル引数として '-1'を渡すと、常に最新のプロトコルが使用されます(ただし、下位互換性はありません)。 –

関連する問題