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