サイトアイコン Python Snippets

pickleモジュールによるシリアライズ(直列化)

データを保存したり復元したりするためにpickleモジュールが使える。

保存

pickle.dump()でオブジェクトをファイルに保存できる。実際にはファイルでなくてもwriteメソッドをもつオブジェクトであればよい。

>>> import pickle
>>> l = [10, 20, 30]
>>> f = open("pickle.dump", "w")
>>> pickle.dump(l, f)            # ファイルに保存
>>> f.close()

復元

pickle.load()でオブジェクトをファイルから復元できる。

>>> f = open("pickle.dump", "r")
>>> l2 = pickle.load(f)          # ファイルから復元
>>> f.close()
>>> l2
[10, 20, 30]

ユーザー定義クラスの保存

>>> class Hoge:                  # Hogeクラスの定義
...   def __init__(self):
...     self.name = "john"
...     self.age = 20
... 
>>> hoge = Hoge()
>>> hoge.name
'john'
>>> hoge.name = "Smith"
>>> hoge.age = 30
>>> hoge.name 
'Smith'
>>> hoge.age
30
>>> f = open("pickle.dump", "w")
>>> pickle.dump([10, 20, hoge], f)  # Hogeインスタンスをリストの要素の一つとして保存
>>> f.close()
>>> f = open("pickle.dump", "r")
>>> l = pickle.load(f)              # 復元
>>> f.close()
>>> l
[10, 20, <__main__.Hoge instance at 0x109e2b128>]
>>> l[2].name
'Smith'
>>> l[2].age
30

参考
pickle — Python オブジェクトの直列化

関連記事:

モバイルバージョンを終了