pythonでのpickleモジュール学習


pythonにはpickleの標準モジュールがあり、このモジュールはほとんどのpythonのすべてのタイプをモジュールを通じてpickleで認識できるフォーマットに変換して記憶することができます.
pickelモジュールには主に2つの関数dump()とload()があります.
dump()は、指定したファイルにデータオブジェクトを特定のフォーマットで保存できます.
構文:
   pickle.dump(obj,file)
load()は,pickleでシーケンス化されたデータをファイルから抽出し,pickleは独自の方法で元のフォーマットに復元する.
構文:
    pickle.load(file)
pickleの使用:
まずdump()を用いてデータのセットをシーケンス化して格納する
 
#!/usr/bin/env python
import pickle
account_info = {
    82345056 : ['123','150'],
    82345057 : ['avcd','90']
}
pkl_file = file('account.pkl','wb')     #     account.pkl 
pickle.dump(account_info, pkl_file)     #  dump         
pkl_file.close()

スクリプトを実行すると、現在のディレクトリの下にaccountが生成されます.pklのファイル
 
root@addam:/script#more account.pkl
(dp0
I82345056
(lp1
S'123'
p2
aS'150'
p3
asI82345057
(lp4
S'avcd'
p5
aS'90'
p6
as.

これがpickleシーケンス化されたファイルです.もちろん、このフォーマットはpickleだけがどんなフォーマットで作られたのか知っているのではないでしょうか.はは.新しいファイルでこのファイルを参照するには、load()を使用する必要があります.
   
#!/usr/bin/env python
import pickle
pkl_file = file('account.pkl','rb')         #         
account_dic = pickle.load(pkl_file)         #  load    
print account_dic
pkl_file.close()
~

実行結果は次のとおりです.
root@addam:/script#python Lod.py
{82345056: ['123', '150'], 82345057: ['avcd', '90']}

もちろんこの過程で内容を修正するにはどうすればいいのでしょうか.簡単です.
 
#!/usr/bin/env python
import pickle
account_info = {
    82345056 : ['123','150',],
    82345057 : ['avcd','90']
}
pkl_file = file('account.pkl','wb')
account_info[82345057][0] = 'abcd123'     # 82345057           abcd23
pickle.dump(account_info, pkl_file)
pkl_file.close()

次に、もう一度loadして修正したかどうか見てみましょう.
root@addam:/script#python Lod.py
{82345056: ['123', '150'], 82345057: ['abcd123', '90']}

では、修正に成功したのを見ることができますよ.
pikcleモジュールはpythonでの機能が強く、これからよく使うモジュールでもありますよ.