Python pickle
ライブラリ完全ガイド
Python 標準ライブラリの pickle
は、オブジェクトをシリアライズ(直列化)して保存し、後で復元するためのツールを提供します。本記事では、pickle
の主要な機能とその活用方法について詳しく解説します。
1. pickle
ライブラリの概要
pickle
は、Python のオブジェクトをバイトストリームに変換し、ファイルやネットワーク経由で保存・送信するための標準ライブラリです。- 一度
pickle
したオブジェクトは、元の状態に復元(アンピクル)できます。 - ほとんどの Python オブジェクト(リスト、辞書、クラスのインスタンスなど)をシリアライズできます。
インストール方法
pickle
は Python の標準ライブラリなので、追加のインストールは不要です。
import pickle
2. 主な機能と使用例
(1) オブジェクトのシリアライズと保存(dump
)
import pickle data = {"name": "Alice", "age": 25, "city": "Tokyo"} with open("data.pkl", "wb") as f: pickle.dump(data, f)
使用例: 辞書やリストなどのオブジェクトをファイルに保存する。
(2) オブジェクトの復元(load
)
import pickle with open("data.pkl", "rb") as f: loaded_data = pickle.load(f) print(loaded_data)
使用例: 保存したデータを元の状態に復元する。
(3) オブジェクトのシリアライズ(dumps
)と復元(loads
)
import pickle data = [1, 2, 3, 4, 5] pickled_data = pickle.dumps(data) restored_data = pickle.loads(pickled_data) print(restored_data)
使用例: ファイルに保存せずに、一時的にデータをバイナリ形式に変換する。
(4) カスタムクラスのシリアライズ
import pickle class Person: def __init__(self, name, age): self.name = name self.age = age person = Person("Bob", 30) with open("person.pkl", "wb") as f: pickle.dump(person, f) with open("person.pkl", "rb") as f: loaded_person = pickle.load(f) print(loaded_person.name, loaded_person.age)
使用例: クラスのインスタンスをシリアライズして保存・復元する。
(5) pickle
のプロトコルバージョンを指定
import pickle data = {"language": "Python", "version": 3.9} with open("data_protocol.pkl", "wb") as f: pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
使用例: より最適なプロトコルを指定して、シリアライズを高速化・最適化する。
(6) pickle
を使ったリストの保存
import pickle numbers = [1, 2, 3, 4, 5] with open("numbers.pkl", "wb") as f: pickle.dump(numbers, f)
使用例: リストをシリアライズして、保存・復元できるようにする。
(7) pickle
を使った辞書の保存
import pickle config = {"debug": True, "theme": "dark"} with open("config.pkl", "wb") as f: pickle.dump(config, f)
使用例: 設定情報を辞書として保存し、後でロードする。
(8) pickle
で複数のオブジェクトを保存
import pickle data1 = [10, 20, 30] data2 = {"name": "Alice", "age": 25} with open("multi.pkl", "wb") as f: pickle.dump(data1, f) pickle.dump(data2, f)
使用例: 1つのファイルに複数のオブジェクトを保存する。
(9) pickle
で保存した複数オブジェクトの復元
import pickle with open("multi.pkl", "rb") as f: data1 = pickle.load(f) data2 = pickle.load(f) print(data1, data2)
使用例: 1つのファイルから複数のオブジェクトをロードする。
(10) pickle
を使ったオブジェクトの比較
import pickle obj1 = {"data": [1, 2, 3]} obj2 = pickle.loads(pickle.dumps(obj1)) print(obj1 == obj2) # True print(obj1 is obj2) # False(異なるオブジェクトだがデータは同じ)
使用例:
pickle
を利用して、オブジェクトの状態を比較する。
3. pickle
の主な機能
機能 | 説明 |
---|---|
dump |
オブジェクトをファイルにシリアライズして保存 |
load |
シリアライズされたオブジェクトをファイルから復元 |
dumps |
オブジェクトをバイト列に変換 |
loads |
バイト列からオブジェクトを復元 |
protocol |
シリアライズ時のプロトコルを指定可能 |
まとめ
Python の pickle
ライブラリを活用すると、データやオブジェクトを簡単に保存・復元できます。特にデータ保存、機械学習モデルのキャッシュ、プロセス間通信などに便利です。pickle
を使って効率的なデータ管理を実現しましょう! 🚀