この記事では、Python のさまざまな型のオブジェクトをファイルに読み書きする方法を解説します。
pickle
モジュール を使うことでリストや辞書などのオブジェクトをファイルに書き込み、書き込んだ型のまま再度読み込むことができます。
pickle
モジュールは信頼できないデータには使用しないでください。また、書き込んだデータは改ざんされてしまう可能性があります。
それでは、pickle
モジュール の使い方を見ていきましょう!
スポンサーリンク
オブジェクトをファイルに書き込む
任意のオブジェクトをファイルに書き込むには pickle
モジュール の dump()
関数 を使います。
import pickle
pickle.dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None)
サンプル
試しに、適当なオブジェクトをファイルに書き込んでみます。
import pickle
data = {
'id': 12345,
'name': '田中太郎'
}
with open('data.pickle', 'wb') as f:
pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)
上記コードを実行すると data.pickle
というファイルが生成されます。
ファイルに書き込んだオブジェクトを読み込む
ファイルから書き込んだオブジェクトを読み込むには pickle
モジュール の load()
関数 を使います。
import pickle
pickle.load(file, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=None)
サンプル
では、先ほど生成した data.pickle
からオブジェクトを読み込んでみましょう!
import pickle
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
print(data)
print(type(data))
実行結果
{'id': 12345, 'name': '田中太郎'}
<class 'dict'>
ファイルに書き込んだ辞書を辞書として読み込むことができました!
自作クラスを読み書きする
pickle
はユーザー定義のクラスも読み書きすることができます。
# 簡単なクラス
class MyClass:
def __init__(self, num, name):
self.num = num
self.name = name
def __repr__(self):
return f'{self.num}, {self.name}'
# インスタンス化
mc = MyClass(1, '田中太郎')
import pickle
# 書き込み
with open('data.pickle', 'wb') as f:
pickle.dump(mc, f, pickle.HIGHEST_PROTOCOL)
# 読み込み
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
print(data)
print(type(data))
実行結果
1, 田中太郎
<class '__main__.MyClass'>
まとめ
この記事では、Python のいろいろな型のオブジェクトをファイルに読み書きする方法を解説しまいした。
pickle は、Python に用意されている多くの組み込み型に使用することができます。その代わり、生成したデータは Python でしか運用できません。
他でも使用したい場合はJSONを使うと便利です。

【Python】オブジェクトをJSON文字列に変換してファイルに読み書きする方法この記事では、オブジェクトをJSON文字列に変換(エンコード)する方法を解説します。JSON文字列に変換することでオブジェクトをファイルに書き込むことができます。また、書き込んだJSON文字列を読み込んでオブジェクトに変換(デコード)することもできます。...
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ