オブジェクト階層を直列化するには、まず pickler を生成し、続いてpickler の dump() メソッドを呼び出します。データストリームから非直列化 するには、まず unpickler を生成し、続いて unpicklerの load() メ ソッドを呼び出します。pickle モジュールでは以下の定数を提供して います:
この手続きを便利にするために、pickle モジュールでは以下の関数を 提供しています:
obj, file[, protocol[, bin]]) |
Pickler(file, protocol, bin).dump(obj)
と同じです。
protocol を指定しない場合、プロトコル 0 が使われます。 protocol に負値か HIGHEST_PROTOCOL を指定すると、 有効なプロトコルの内、もっとも高いバージョンのものが使われます。
バージョン 2.3 で 変更 された仕様: bin パラメータは非推奨で、後方互換性のためだけに提供されています。代わりに protocol を使うべきです。
オプションの bin 引数が真の場合、バイナリ pickle 化形式が使われ ます; そうでない場合 (より低効率の) テキスト pickle 化形式が使われます (以前のバージョンとの互換性のため、こちらが標準になっています)。
file は、単一の文字列引数を受理する write() メソッド を持たなければなりません。従って、 file としては、書き込みのために 開かれたファイルオブジェクト、 StringIO オブジェクト、 その他前述のインタフェースに適合する他のカスタムオブジェクトをとることが できます。
file) |
Unpickler(file).load()
と同じです。
file は、整数引数をとる read() メソッドと、引数の必要 ない readline() メソッドを持たなければなりません。 これらのメソッドは両方とも文字列を返さなければなりません。 従って、 file としては、読み出しのために 開かれたファイルオブジェクト、 StringIO オブジェクト、 その他前述のインタフェースに適合する他のカスタムオブジェクトをとることが できます。
この関数はデータ列の書き込まれているモードがバイナリかそうでないかを 自動的に判断します。
obj[, protocol[, bin]]) |
protocol を指定しない場合、プロトコル 0 が使われます。 protocol に負値か HIGHEST_PROTOCOL を指定すると、 有効なプロトコルの内、もっとも高いバージョンのものが使われます。
バージョン 2.3 で 変更 された仕様: bin パラメータは非推奨で、後方互換性のためだけに 提供されています。代わりに protocol を使うべきです。
オプションの bin 引数が真の場合、バイナリの pickle 形式が使われます; そうでない場合、(より低効率の) テキストの pickle 形式が使われます (こちらが標準の設定です)。
string) |
pickle モジュールでは、以下の 3 つの例外も定義しています:
pickle モジュールでは、2 つの呼び出し可能オブジェクト 3.3として、Pickler および Unpickler を提供しています:
file[, protocol[, bin]]) |
protocol を指定しない場合、プロトコル 0 が使われます。protocol に負値か HIGHEST_PROTOCOL を指定すると、有効なプロトコルの内、もっとも高いバージョンのものが使われます。
バージョン 2.3 で 変更 された仕様: bin パラメータは非推奨で、後方互換性のためだけに提供されています。代わりに protocol を使うべきです。
オプションの bin を真にすると、 pickler により高効率のバイナリ pickle 形式を使うように指示します。 そうでない場合、ASCII 形式が使われます (こちらの方が標準です)。
file は単一の文字列引数を受理する write() メソッドを 持たなければなりません。従って、 file としては、書き込みのために 開かれたファイルオブジェクト、 StringIO オブジェクト、 その他前述のインタフェースに適合する他のカスタムオブジェクトをとることが できます。
Pickler オブジェクトでは、一つ (または二つ) の public なメソッド を定義しています:
obj) |
) |
mypickler.memo.clear()
以前のバージョンの Python での動作をサポートする必要のないコードでは、 単に clear_memo() を使ってください。
同じ Pickler のインスタンスに対し、 dump() メソッドを 複数回呼び出すことは可能です。この呼び出しは、対応する Unpickler インスタンスで同じ回数だけ load() を呼び出す操作に対応します。 同じオブジェクトが dump() を複数回呼び出して pickle 化された 場合、load() は全て同じオブジェクトに対して参照を行います 3.4。 。
Unpickler オブジェクトは以下のように定義されています:
file) |
file は、整数引数を取る read() メソッド、および引数を 持たない readline() メソッドの、 2 つのメソッドを持ちます。 両方のメソッドとも文字列を返します。従って、 file としては、 読み出しのために開かれたファイルオブジェクト、 StringIO オブジェクト、その他前述のインタフェースに適合する他のカスタム オブジェクトをとることができます。
Unpickler オブジェクトは 1 つ (または 2 つ) の public な メソッドを持っています:
) |
) |
注意: noload() メソッドは現在 cPickle モジュールで生成された Unpickler オブジェクトのみで 利用可能です。pickle モジュールの Unpickler には、 noload() メソッドがありません。