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ファイルを読み取る方法
お読み頂きありがとうございました。