【Python】pickleファイルを作成・読み取る方法

Pythonには、オブジェクトをファイルに保存したり、ファイルから読み込んだりするための便利なpickleモジュールがあります。このブログでは、pickleモジュールを使用してデータをシリアライズ(バイナリ形式に変換)し、ファイルに保存する方法と、そのファイルからデータをデシリアライズ(元のオブジェクトに復元)する方法を詳しく説明します。

pickle モジュールとは

pickleモジュールはオブジェクトをバイトストリームに変換し、そのバイトストリームをバイナリファイルに保存したり、保存されたバイナリファイルのバイトストリームを元のオブジェクトに復元したりする際に用いる標準ライブラリです。

pickleモジュールを使うことで、リストや辞書などの複雑なデータ型をファイルに保存したり、ネットワーク越しに送信したりすることができるようになります。

「Pickle化(ピクル化)」と「非Pickle化(非ピクル化)」について

オブジェクトをバイトストリームに変換することを「pickle化」と呼び、バイトストリームを元のオブジェクトに復元することを「非pickle化」と呼びます。pickleという単語を使ってはいますが、やっていることは「シリアライズ(直列化)」と「デシリアライズ(非直列化)」です。そのため、公式ドキュメントにもpickle化の別名として以下の用語を使用しています。

  • 直列化(serialization)
  • 整列化(marshalling)
  • 平坦化(flattening)

この記事では、混乱を避けるため「Pickle化」と「非Pickle化」という用語で統一します。

pickleファイルを作成する方法

pickleファイルを作成するためには、pickleモジュールのdump関数を使用します。

dump関数の構文を以下に示します。

dump関数の構文

pickle.dump(obj, file)

ここで、objはpickle化するオブジェクトで、fileはファイルオブジェクトです。

以下にpickleファイルを作成するサンプルコードを示します。このサンプルコードをcreate_pickle.pyという名前で保存します。

# pickleモジュールをインポート
import pickle

# 保存するデータを準備
data = {
    'name': 'Taro',
    'age': 30,
}

# `data.pkl`という名前のファイルにデータを書き込む
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

このコードでは、data.pklという名前のファイルをバイナリ書き込みモード(wb)で開き、その後、pickleモジュールのdump関数を使ってデータをファイルに書き込んでいます。

上記のサンプルコードが保存されているディレクトリに移動して、コマンドプロンプトまたはターミナルで以下のコマンドを実行すると、data.pklという名前のpickleファイルを作成することができます。

python create_pickle.py

# または以下のコマンド
python3 create_pickle.py

pickleファイルを読み取る方法

次に、先ほど作成したpickleファイルを読み取る方法について説明します。pickleファイルを読み取るには以下の様々な方法があります。

  • pickleファイルを読み取るコードを記述する
  • Pythonのコマンドで読み取る
  • VSCodeの拡張機能(vscode-pydata-viewer)をインストールして読み取る

これらの方法について順番に説明します。

pickleファイルを読み取るコードを記述する

pickleファイルを読み取るためには、pickleモジュールのload関数を使用します。

load関数の構文を以下に示します。

load関数の構文

pickle.load(file)

ここで、fileはファイルオブジェクトです。load関数はpickleファイルを非pickle化し、元のオブジェクトを返します。

以下にpickleファイルを読み取るサンプルコードを示します。このサンプルコードをread_pickle.pyという名前で保存します。

# pickleモジュールをインポート
import pickle

# `data.pkl`ファイルを読み込む
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)

# 読み込んだデータを表示
print(loaded_data)

このコードでは、data.pklという名前のファイルをバイナリ読み取りモード(rb)で開き、その後、pickleモジュールのload関数を使ってファイルからデータを読み込み、print関数で読み込んだデータをコンソールに表示します。

上記のサンプルコードとpickleファイル(data.pkl)が保存されているディレクトリに移動して、コマンドプロンプトまたはターミナルで以下のコマンドを実行すると、pickleファイルを読み取ることができます。

python read_pickle.py
# または以下のコマンド
python3 read_pickle.py

Pythonのコマンドで読み取る

Pythonのコマンドを使用してpickleファイルの中身を直接確認することもできます。python -m pickleというコマンドを使用します。この-mオプションはPythonの標準モジュールを実行するためのものです。

pickleファイル(data.pkl)が保存されているディレクトリに移動し、コマンドプロンプトまたはターミナルで以下のコマンドを実行します。

python -m pickle data.pkl

このコマンドを実行すると、pickleファイル(data.pkl)の内容を表示することができます。

VSCodeの拡張機能(vscode-pydata-viewer)をインストールして読み取る

Visual Studio Code(VSCode)には、vscode-pydata-viewerという拡張機能があります。この拡張機能をインストールすると、VSCode内でpickleファイルの内容を簡単に閲覧することができます。

本記事のまとめ

この記事では『pickleファイルを作成・読み取る方法』について、以下の内容を説明しました。

  • pickle モジュールとは
  • 「Pickle化(ピクル化)」と「非Pickle化(非ピクル化)」について
  • pickleファイルを作成する方法
  • pickleファイルを読み取る方法

お読み頂きありがとうございました。