Pythonで大きなJSONファイルを分割する方法について説明します。この記事は、Pythonのijson
モジュールを使用して、大きなJSONファイルを一部ずつ読み込み、要素単位で分割する方法を紹介します。
大きなJSONファイルの分割
大きなサイズのJSONファイルをjson
モジュールで読むと、処理にかなり時間がかかります。しかし、ijson
モジュールを使うと、大きなサイズのJSONファイルが一部ずつ読めます。
以下に、大きなJSONファイルを要素単位で分割し、分割後のファイルをjson
モジュールで読み込めるようにするコードを示します。
import ijson
def save_as_json(string, item, file_path):
with open(file_path, "w") as f:
f.write('{\"%s\": %s}' % (string, str(item).replace(\"'\",'\"').replace(\"True\",'true').replace(\"False\",'false').replace(\"None\",'null')))
with open("test.json", "r") as j:
items = ijson.items(j, "hoge1.item.hoge2")
i = 1
for item in items:
json_file = "%s.json" % i
save_as_json("hoge2", item, json_file)
i += 1
このコードは、ijson.items
を使用してJSONファイルから要素を一つずつ取り出し、それぞれの要素を新しいJSONファイルに保存します。
注意点
このコードは、Pythonの文字列をJSON形式に変換する際に、シングルクォーテーションをダブルクォーテーションに変換し、True
、False
、None
をそれぞれtrue
、false
、null
に変換しています。これは、Pythonの文字列をJSON形式に変換する際の特性によるもので、意図しない変換を防ぐためにはもう少し丁寧な変換をした方がよいかもしれません。
以上、Pythonで大きなJSONファイルを分割する方法について説明しました。この方法を使えば、大きなJSONファイルを効率的に扱うことができます。