2022年4月12日火曜日

Python pickle でオブジェクトをバイナリファイルに保存してオブジェクトの状態を保存する

Python pickle でオブジェクトをバイナリファイルに保存してオブジェクトの状態を保存する

概要

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 件のコメント:

コメントを投稿