Up

バイナリファイルへの保存と読み出し

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によって用意し、ライブラリpickledunp関数によってバイナリファイルに保存する。例えば、次のスクリプト

 

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と辞書dtuple (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}

 

 

 

Home