pickle使ってみた
最近PythonChallengeにほんの少し取り組んでいて,そこで
初めてPickleモジュールを使うことになったのでメモ.
pickleとは
python特有のデータ形式のことであり,
ざっくり言えばバイナリで保存するのではなく,
全部文字列にして扱いましょう,っていう感じだと思います.
いまいちよく解らんw
使っていきましょう.
とりあえず
import pickle
これは欠かせない.
pickle化する
何らかのオブジェクトをpickleにしてしまう.
# 適当にpickle化したいものを用意 sample = ['a', ('b', 'c'), 1, {2}, 3, ['tanaka'], {'hogehoge':99}] print 'sample =', sample
次にpickle.dump()を使って保存する.
# 書き込みモードでpickle化したものを格納するファイル(.dump)を用意 f = file('hoge.dump', 'w') # pickle化する(dump()を使う) pickle.dump(sample, f) f.close() # ちゃんと閉じましょう
これでpickleオブジェクトとしてsampleが保存されたことになる.
pickleオブジェクトを開く
保存したものを開くにはpickle.load()を使えば良い.
g = file('hoge.dump', 'r') # ファイルオブジェクトに対してload()を使う pickled_sample = pickle.load(g) print 'pickled_sample =', pickled_sample
pickleに対する操作
特に変なことはない.至って普通に操作できる.
pickled_sample.insert(3, 'fugafuga') print 'pickled_sample =', pickled_sample # 上書き保存 h = file('fuga.dump', 'w') pickle.dump(pickled_sample, h) h.close()
ちなみに
pickleオブジェクトをfileオブジェクトとして開いてみると,
print '-----------' x = file('hoge.dump', 'r').read() print ''.join(x) print '-----------' y = file('fuga.dump', 'r').read() print ''.join(y)
結果
上のを全部実行した結果
sample = ['a', ('b', 'c'), 1, set([2]), 3, ['tanaka'], {'hogehoge': 99}] pickled_sample = ['a', ('b', 'c'), 1, set([2]), 3, ['tanaka'], {'hogehoge': 99}] pickled_sample = ['a', ('b', 'c'), 1, 'fugafuga', set([2]), 3, ['tanaka'], {'hogehoge': 99}] ----------- (lp0 S'a' p1 a(S'b' p2 S'c' p3 tp4 aI1 ac__builtin__ set p5 ((lp6 I2 atp7 Rp8 aI3 a(lp9 S'tanaka' p10 aa(dp11 S'hogehoge' p12 I99 sa. ----------- (lp0 S'a' p1 a(S'b' p2 S'c' p3 tp4 aI1 aS'fugafuga' p5 ac__builtin__ set p6 ((lp7 I2 atp8 Rp9 aI3 a(lp10 S'tanaka' p11 aa(dp12 S'hogehoge' p13 I99 sa.
なんだこれはw