概要
Python の pickle はオブジェクトをそのままバイナリファイルに保存することができます
またバイナリファイルからオブジェクトを生成することもできます
オブジェクトのデータを永続化するのにデータベースやキャッシュを用意するのが普通ですがそこまでやる必要がない場合には便利です
環境
- macOS 11.6.5
- Python 3.10.2
サンプルコード
-
vim app.py
import pickle
import sys
class User():
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print(self.name)
print(self.age)
if __name__ == '__main__':
name = "hawksnowlog"
if sys.argv[1] == 'save':
# 保存
with open('./{}.pickle.bin'.format(name), 'wb') as f:
user = User(name, 10)
pickle.dump(user, f)
elif sys.argv[1] == 'load':
# 取得
with open('./{}.pickle.bin'.format(name), 'rb') as f:
user = pickle.load(f)
user.show()
dump で保存し load で読み込みます
動作確認
-
python app.py save
-
python app.py load
保存したオブジェクトか再現されることが確認できると思います
ただ状態を保存しているだけでオブジェクトIDは変わるので注意してください
0 件のコメント:
コメントを投稿