カテゴリ: Python 更新日: 2025/12/18

Pythonの辞書をファイルに保存・読み込む方法!pickleやjsonの使い分けを学ぼう

Pythonの辞書をファイルに保存・読み込む方法!pickleやjsonの使い分けを学ぼう
Pythonの辞書をファイルに保存・読み込む方法!pickleやjsonの使い分けを学ぼう

先生と生徒の会話形式で理解しよう

生徒

「Pythonの辞書を作ったけど、プログラムを終わったあともそのまま残しておきたいです。どうやって保存するんですか?」

先生

「Pythonには辞書をファイルに保存したり、読み込んだりする方法がいくつかあります。特に使うのがpicklejsonです。」

生徒

「pickleとjsonはどう違うんですか?」

先生

「良い質問ですね。用途に合わせて使い分けるのがポイントです。これから順番に詳しく説明しますね。」

1. Pythonの辞書をファイルに保存したい理由

1. Pythonの辞書をファイルに保存したい理由
1. Pythonの辞書をファイルに保存したい理由

プログラムの途中で作った辞書データは、通常はプログラムが終わると消えてしまいます。ですが、辞書をファイルに保存しておけば、次回プログラムを起動したときにそのままデータを使い続けられます。たとえば、ゲームのセーブデータや設定情報を保存するときに便利です。

2. pickleとは?Python専用の保存形式

2. pickleとは?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とは?誰でも読めるテキスト形式

3. jsonとは?誰でも読めるテキスト形式
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の使い分け

4. pickleとjsonの使い分け
4. pickleとjsonの使い分け
  • pickleはPython専用の保存方法。複雑なデータもそのまま保存可能。ただしファイルはバイナリで人間には読めません。
  • jsonはテキスト形式で、他のプログラムや言語ともデータのやり取りができる。ただし保存できるデータの種類が限られます。

たとえば、自分だけで使うプログラムや複雑なデータの保存ならpickle。他の言語やサービスとデータをやり取りするならjsonを使うのがおすすめです。

5. ファイル保存の注意点

5. ファイル保存の注意点
5. ファイル保存の注意点

ファイルを保存・読み込みするときは、正しいモード(書き込みなら"wb""w"、読み込みなら"rb""r")を指定します。

また、ファイルのパス(場所)を間違えないように気をつけましょう。特に相対パス(今のフォルダからの位置)と絶対パス(パソコン内の正確な場所)があります。

初心者のうちはプログラムと同じフォルダに保存すると扱いやすいです。

6. 重要ポイント

6. 重要ポイント
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の辞書とファイル操作は実務でもよく使われるので、ぜひ何度も試して身につけていきましょう。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説