pickleモジュールを使うと、リストやディクショナリなどの複雑なデータ型をファイルに保存することができます。
pytohnのいろいろなデータを文字列に変換(シリアライズ)できます。
また変換した文字列を元に、元のデータを復元することができます。
pickleモジュールには大まかに分けて2種類の関数があります。文字列をベースとしてpythonオブジェクトをシリアライズ、復元する関数と、ファイルベースに処理を行う関数です。
文字列に変換(シリアライズ)
文字列ベース
● pickle.dumps(オブジェクト)
引数で指定したpythonオブジェクトをシリアライズした結果を文字列として返します。
import pickle
a=[1,2,3]
b = pickle.dumps(a)
print(b) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' を表示
ファイルベース
● pickle.dump(オブジェクト, 対象ファイル)
指定したファイルに対してオブジェクトを書き出すことができます。
※)対象となるファイルは書き込み可能で開かれている必要があります。
import pickle
f = open('test.txt', 'w')
list = [1, 2, 3, 4, 'hoge']
pickle.dump(list, f)
f.close()
シリアライズした文字列を復元
文字列の復元
● pickle.loads(文字列)
import pickle
a=[1,2,3]
b = pickle.dumps(a)
print(b) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' を表示
c = pickle.loads(b)
print(c) #[1, 2, 3]を表示
ファイルからオブジェクトを取り出す
● pickle.load(対象ファイル)
逆にpickle.load(ファイル)で、ファイルからオブジェクトを取り出します。
pickle.loadするには、対象となるファイルは読み込み可能で開かれている必要があります。
import pickle
f = open('test.txt')
l = pickle.load(f)
f.close()