【Python】JSONを読み込む方法【複数ファイルからの取得はこれでOKです】

【Python】JSONを読み込む方法【複数ファイルからの取得はこれでOKです】プログラミング

こんにちは。さすをです。

以前、6,000万のPython案件に携わりました。

今回の記事は、複数ファイルからJSONを読み込む方法を紹介していきます。

それでは本文をどうぞ。

複数ファイルからJSONを読み込みたいんだけど、どうすればいいの。。

繰り返し処理をするのかしら、、よくわからないわ、、

複数ファイルからJSONを読み込みたい女性
複数ファイルからJSONを読み込みたい女性
さすを
さすを

その悩みを解決します!

この記事を読むとわかること:

・複数ファイルからJSONを読み込む方法

・複数のJSONを1つのファイルとして出力する方法

筆者の情報:

・現役システムエンジニア 兼 副業ブロガー

・過去に6,000万のPython案件を受注

スポンサーリンク

1.複数ファイルからJSONを読み込む方法

1.複数ファイルからJSONを読み込む方法

今回はフォルダにsample1.json、sample2.json、sample3.jsonというJSONデータがあるとして、説明をしていきます。

sample1.json:

{
    "Age": { "Satoshi": 40, "Kazunari": 37 },
    "Test": [{ "Math": 70, "English": 60 },
        { "Math": 95, "English": 40 }
    ],
    "Name": "Arashi"
}

sample2.json:

{
    "Age": { "masaki": 38, "Sho": 38 },
    "Test": [{ "Math": 80, "English": 50 },
        { "Math": 100, "English": 100 }
    ],
    "Name": "Arashi"
}

sample3.json:

{
    "Age": { "Jun": 37 },
    "Test": [{ "Math": 85, "English": 85 }],
    "Name": "Arashi"
}

複数ファイルからJSONを読み込むスクリプトはこちら。

# jsonを読み込むときに必ず使用するモジュール
import json

import os

#フォルダの個数をカウント(listdirの引数はファイルのあるフォルダのパス)
num = len(os.listdir('blog_data'))

#読み込むファイルのパスを指定
#'r'はreadの略
for i in range(num):
    json_file = open('blog_data/sample' + str(i+1) + '.json','r')

#辞書型で読み込む(json.load())
    json_dict = json.load(json_file)

# 表示
    print(json_dict)
#{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}], 'Name': 'Arashi'}
{'Age': {'masaki': 38, 'Sho': 38}, 'Test': [{'Math': 80, 'English': 50}, {'Math': 100, 'English': 100}], 'Name': 'Arashi'}0}, {'Math': 100, 'English': 100}], 'Name': 'Arashi'}                Arashi'}
{'Age': {'Jun': 37}, 'Test': [{'Math': 85, 'English': 85}], 'Name': 'Arashi'}
さすを
さすを

複数のJSONファイルを読み込むことができました!

出力結果が文字化けしている場合は、open()関数の引数でエンコーディング(unicode-escape)を設定しましょう。

json_file = open('blog_data/sample' + str(i+1) + '.json','r',encoding='unicode-escape')


万が一、エラーが発生してしまった場合は、【Python】JSON形式のファイル読み込み時にエラーがでた場合の対処方法の記事をご覧ください。

よくあるエラーをまとめているので、すぐに解決することができます。

2.改行で区切られている複数のJSONの読み込み方法

2.1つのファイルに改行で区切られている複数のJSONの読み込み方法

1つのファイルに改行で区切られている複数のJSONを読み込む方法は、pandasライブラリを使用するのが一番簡単です。

複数のデータが改行されているJSONの例:

{ "name": "satoshi", "age": 40, "color": "blue", "hobby": "fishing" }
{ "name": "sho", "age": 38, "color": "red", "hobby": "rap" }
{ "name": "jun", "age": 37, "color": "purple", "hobby": "smoothie" }
{ "name": "masaki", "age": 38, "color": "green", "hobby": "animal" }
{ "name": "kazunari", "age": 37, "color": "yellow", "hobby": "game" }

詳しくは、【徹底解説】pandasでJSON形式のファイルを読み込む方法の記事で解説しているので参考にしてみてください。

3.複数ファイルからJSONを読み込み、一つのファイルとして出力する方法

3.複数ファイルからJSONを読み込み、一つのファイルとして出力する方法

複数ファイルからJSONを読み込み、一つのファイルとして出力するのは、リストを使えばOKです。

# jsonを読み込むときに必ず使用するモジュール
import json

import os

#フォルダの個数をカウント(listdirの引数はファイルのあるフォルダのパス)
num = len(os.listdir('blog_data'))

#空のリストを作成
json_list = []

#読み込むファイルのパスを指定
#'r'はreadの略
for i in range(num):
    json_file = open('blog_data/sample' + str(i+1) + '.json','r')

#辞書型で読み込む(json.load())
#読み込んだJSONをリストに追加
    json_dict = json.load(json_file)
    json_list.append(json_dict)

#ファイルに書き出し
with open('blog_data/sample_total.json', 'w') as f:
    json.dump(json_list, f, indent=4)

出力結果は下記の通り。

[
    {
        "Age": {
            "Kazunari": 37,
            "Satoshi": 40
        },
        "Name": "Arashi",
        "Test": [
            {
                "English": 60,
                "Math": 70
            },
            {
                "English": 40,
                "Math": 95
            }
        ]
    },
    {
        "Age": {
            "Sho": 38,
            "masaki": 38
        },
        "Name": "Arashi",
        "Test": [
            {
                "English": 50,
                "Math": 80
            },
            {
                "English": 100,
                "Math": 100
            }
        ]
    },
    {
        "Age": {
            "Jun": 37
        },
        "Name": "Arashi",
        "Test": [
            {
                "English": 85,
                "Math": 85
            }
        ]
    }
]
さすを
さすを

1ファイルに出力することができました!

4.まとめ

4.まとめ

6,000万のPython案件に携わった経験のある筆者が、複数ファイルからJSONを読み込む方法を紹介してきました。

Python開発では複数のJSONファイルを読み込んで、整形、出力することが非常に多いので、改めて確認しておきましょう!

この記事が少しでもあなたの役に立てていたらうれしいです。

頑張るあなたを応援しています!

それでは!

コメント

タイトルとURLをコピーしました