Pythonの辞書をファイルに保存・読み込む方法!pickleやjsonの使い分けを学ぼう
生徒
「Pythonの辞書を作ったけど、プログラムを終わったあともそのまま残しておきたいです。どうやって保存するんですか?」
先生
「Pythonには辞書をファイルに保存したり、読み込んだりする方法がいくつかあります。特に使うのがpickleとjsonです。」
生徒
「pickleとjsonはどう違うんですか?」
先生
「良い質問ですね。用途に合わせて使い分けるのがポイントです。これから順番に詳しく説明しますね。」
1. Pythonの辞書をファイルに保存したい理由
プログラムの途中で作った辞書データは、通常はプログラムが終わると消えてしまいます。ですが、辞書をファイルに保存しておけば、次回プログラムを起動したときにそのままデータを使い続けられます。たとえば、ゲームのセーブデータや設定情報を保存するときに便利です。
2. pickleとは?Python専用の保存形式
pickleはPythonのデータをそのままファイルに保存して、後から読み込める便利な方法です。pickleは「ピクル」と読み、Pythonの独自形式なので他の言語では使えません。
辞書のような複雑なデータ構造もそのまま保存・復元できるのが大きな特徴です。
import pickle
data = {"名前": "花子", "年齢": 30, "趣味": ["料理", "旅行"]}
# ファイルに保存する(書き込みモードは'b'でバイナリ)
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
# ファイルから読み込む
with open("data.pkl", "rb") as f:
loaded_data = pickle.load(f)
print(loaded_data)
{'名前': '花子', '年齢': 30, '趣味': ['料理', '旅行']}
ポイント:pickleファイルはバイナリ形式で保存されます。ファイルの中身は人間が読めません。
3. jsonとは?誰でも読めるテキスト形式
jsonは「JavaScript Object Notation」の略で、データをテキストで表現するフォーマットです。JSONは多くのプログラムやサービスで使われているため、Python以外の言語やツールとデータをやり取りしたいときに便利です。
ただし、JSONはテキスト形式なので、辞書の中身が文字列や数値、リストなど基本的なものに限られます。Python独自の型は保存できません。
import json
data = {"名前": "花子", "年齢": 30, "趣味": ["料理", "旅行"]}
# JSON形式でファイルに保存(日本語を見やすくするためensure_ascii=False)
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False)
# JSONファイルから読み込む
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data)
{'名前': '花子', '年齢': 30, '趣味': ['料理', '旅行']}
ポイント:JSONファイルはテキストなので中身をメモ帳などで開いて確認できます。
4. pickleとjsonの使い分け
- pickleはPython専用の保存方法。複雑なデータもそのまま保存可能。ただしファイルはバイナリで人間には読めません。
- jsonはテキスト形式で、他のプログラムや言語ともデータのやり取りができる。ただし保存できるデータの種類が限られます。
たとえば、自分だけで使うプログラムや複雑なデータの保存ならpickle。他の言語やサービスとデータをやり取りするならjsonを使うのがおすすめです。
5. ファイル保存の注意点
ファイルを保存・読み込みするときは、正しいモード(書き込みなら"wb"や"w"、読み込みなら"rb"や"r")を指定します。
また、ファイルのパス(場所)を間違えないように気をつけましょう。特に相対パス(今のフォルダからの位置)と絶対パス(パソコン内の正確な場所)があります。
初心者のうちはプログラムと同じフォルダに保存すると扱いやすいです。
6. 重要ポイント
- Pythonの辞書はファイルに保存して、あとで読み込めると便利
pickleはPython専用で複雑なデータ向き。保存はバイナリ形式jsonはテキスト形式で他の言語ともやり取り可能。扱えるデータは基本型に限る- ファイルの読み書き時はモードと文字コードに注意
まとめ
Pythonの辞書を保存・読み込みする仕組みを振り返ろう
この記事では、Pythonの辞書データをファイルに保存し、あとから読み込んで再利用する方法について学んできました。 Pythonでプログラムを書いていると、設定情報やユーザーデータ、途中まで作成したデータ構造をプログラム終了後も残しておきたい場面が多くあります。 そのようなときに役立つのが、辞書をファイルとして保存する仕組みです。 今回は代表的な方法として、pickleとjsonという二つの保存方法を中心に、それぞれの特徴や使い分けの考え方を確認しました。
pickleはPython専用の保存形式で、辞書の中にリストや別の辞書が入っているような複雑なデータ構造でも、そのままの形で保存できる点が大きな魅力です。 Pythonのオブジェクトを丸ごと保存して、同じPython環境で完全に復元できるため、内部処理用のデータや個人利用のプログラムにはとても向いています。 一方で、保存されるファイルはバイナリ形式となり、人間が中身を直接読むことはできません。 また、Python以外の言語では扱えないため、用途が限定される点も理解しておく必要があります。
それに対してjsonは、テキスト形式でデータを保存できる点が特徴です。 辞書の内容が文字列や数値、リストといった基本的なデータ型で構成されていれば、JSON形式として問題なく保存できます。 ファイルをそのまま開いて中身を確認できるため、データの内容を目で確認したい場合や、他のプログラムやWebサービスとデータをやり取りする場合に非常に便利です。 Python初心者にとっても、保存された内容が見えることで安心感があり、理解しやすい方法と言えるでしょう。
pickleとjsonの使い分けを意識することの大切さ
辞書をファイルに保存する際に重要なのは、「どの形式で保存するのが目的に合っているか」を考えることです。 単に保存できれば良いというだけでなく、あとからどのように使うのか、誰がそのファイルを扱うのかによって、最適な方法は変わってきます。 Pythonだけで完結するプログラムで、データ構造をそのまま保持したい場合はpickleが適しています。 一方で、将来的に他の言語やツールと連携する可能性がある場合や、データを確認・編集したい場合はjsonが向いています。
また、ファイルの読み書きにおいては、モード指定や文字コードの扱いにも注意が必要でした。 pickleではバイナリモードでの読み書きが必須となり、jsonでは日本語を扱う場合に文字コードやensure_asciiの指定が重要になります。 こうした細かいポイントを理解しておくことで、エラーや文字化けを防ぎ、安定したプログラムを書くことができます。
まとめとしてのサンプルプログラム
ここで、今回学んだ内容を整理するために、pickleとjsonの両方を使った簡単なサンプルプログラムを確認してみましょう。 辞書データを保存し、再び読み込む基本的な流れを一度に確認できます。
import pickle
import json
user_data = {
"ユーザー名": "taro",
"レベル": 5,
"アイテム": ["剣", "盾", "回復薬"]
}
# pickleで保存と読み込み
with open("user_data.pkl", "wb") as f:
pickle.dump(user_data, f)
with open("user_data.pkl", "rb") as f:
pickle_loaded = pickle.load(f)
# jsonで保存と読み込み
with open("user_data.json", "w", encoding="utf-8") as f:
json.dump(user_data, f, ensure_ascii=False)
with open("user_data.json", "r", encoding="utf-8") as f:
json_loaded = json.load(f)
print(pickle_loaded)
print(json_loaded)
このように、保存方法を切り替えるだけで、同じ辞書データを異なる用途に応じて扱うことができます。 Pythonの辞書とファイル操作を組み合わせることで、プログラムの幅は大きく広がります。
生徒
「辞書を保存する方法が一つだけじゃなくて、目的によって使い分ける必要があるんですね。 pickleとjsonの違いがようやく分かってきました。」
先生
「その理解はとても大切です。 データをどう残すかを考えられるようになると、プログラムの完成度が一段上がります。」
生徒
「自分用のプログラムならpickle、他と連携するならjson、という考え方がしっくりきました。」
先生
「とても良いまとめ方ですね。 今後ファイル保存が必要になったら、今日学んだ内容を思い出してください。」
生徒
「これで、設定ファイルやデータ保存も自信を持って書けそうです。」
先生
「その調子です。 Pythonの辞書とファイル操作は実務でもよく使われるので、ぜひ何度も試して身につけていきましょう。」