バイナリファイルへの保存と読み出し
pickleの利用
ライブラリpickleを利用すると、バイナリファイルへの保存と読み出しが簡単にできる。例を、リスト1に示す。
リスト1 ライブラリpickleの使用例
import numpy
as np
import pickle
a = np.array([[1,2,3],[4,5,6]])
print(a)
f = open('a.pkl',
'wb')
pickle.dump(a, f)
# 配列aのファイル'a.pkl'への保存
f.close()
g = open('a.pkl',
'rb')
b = pickle.load(g)
# 保存された'a.pkl'からbへの読み出し
g.close()
print(b)
d = {'A':1, 'B':2}
print(d)
h = open('ad.pkl',
'wb')
pickle.dump((a, d), h) # 行列と辞書のtupleの保存
h.close()
s = open('ad.pkl',
'rb')
(x, y) = pickle.load(s) # 保存されたtupleの読み出し
s.close()
print(x)
print(y)
ファイルオブジェクトを関数openによって用意し、ライブラリpickleのdunp関数によってバイナリファイルに保存する。例えば、次のスクリプト
f = open('a.pkl',
'wb')
pickle.dump(a, f)
# 配列aのファイル'a.pkl'への保存
f.close()
により、配列aの内容がバイナリファイル'a.pkl'に保存される。openの第2引数が'wb'であることに注意。
バイナリファイルa.pklに保存された内容は、次のスクリプトにより読み出されて出力されている。
g = open('a.pkl',
'rb')
b = pickle.load(g)
# 保存された'a.pkl'からbへの読み出し
g.close()
print(b)
関数openの第二引数が'rb'であることに注意。print(b)による出力は以下のようである。
[[1 2 3]
[4 5 6]]
複数のオブジェクトをtupleとしてまとめて保存することもできる。
次の例では、配列aと辞書dをtuple (a, d)としてまとめてad.pklに保存している。
d = {'A':1, 'B':2}
print(d)
h = open('ad.pkl',
'wb')
pickle.dump((a, d), h) # 行列と辞書のtupleの保存
h.close()
保存した配列と辞書をtuple として読み込んで出力するスクリプト例を次に示す。
s = open('ad.pkl',
'rb')
(x, y) = pickle.load(s) # 保存されたtupleの読み出し
s.close()
print(x)
print(y)
出力は次のようである。
[[1 2 3]
[4 5 6]]
{'A': 1, 'B': 2}