1. Pickle パッケージ
(1) メモリ内のオブジェクトをテキスト ストリームに変換します:
import pickle # define class class Bird(object): have_feather = True way_of_reproduction = 'egg' summer = Bird() # construct an object picklestring = pickle.dumps(summer) # serialize object
pickle.dumps() メソッドを使用して、オブジェクト Summer を文字列 picklesring (つまり、テキスト ストリーム) に変換します。次に、通常のテキスト保存方法を使用して文字列をファイルに保存します (テキスト ファイルの入出力)。
もちろん、pickle.dump() メソッドを使用して上記の 2 つの部分を 1 つに結合することもできます:
import pickle # define class class Bird(object): have_feather = True way_of_reproduction = 'egg' summer = Bird() # construct an object fn = 'a.pkl' with open(fn, 'w') as f: # open file with write-mode picklestring = pickle.dump(summer, f) # serialize and save object
オブジェクト Summer はファイル a.pkl に保存されます
(2)、オブジェクトを再構築します
まず、テキストからテキストを読み取り、文字列に保存します(テキストファイルの入出力)。次に、 pickle.loads(str) メソッドを使用して文字列をオブジェクトに変換します。この時点で、プログラムにはオブジェクトのクラス定義がすでに存在している必要があることに注意してください。
さらに、pickle.load() メソッドを使用して上記の手順をマージすることもできます:
import pickle # define the class before unpickle class Bird(object): have_feather = True way_of_reproduction = 'egg' fn = 'a.pkl' with open(fn, 'r') as f: summer = pickle.load(f) # read file and build object
2. cPickle パッケージ
cPickle パッケージの機能と使用法は、pickle パッケージとほぼ同じです (は違いです)実際にはほとんど使用されません)、違いは、cPickle が C 言語で書かれており、pickle パッケージよりも 1000 倍高速であることです。上記の例で、cPickle パッケージを使用したい場合は、インポート ステートメントを次のように変更できます。
cPickle を pickle としてインポート
変更を加える必要はありません。