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` を使って効率的なデータ管理を実現しましょう! 🚀