JSON形式ファイルの読み取り
●今回使用するサンプルファイル
di.json
{
"name": "Google Inc",
"url": "https://www.google.com",
"staffs": [
{"name": "田中", "age": 40},
{"name": "佐藤", "age": 60}
]
}
●json.loadを使ってファイルを読み取る
di_read.py
import json
with open(r'C:\Users\User\Desktop\python3_practice\di_read.json', encoding="utf-8") as f:
di = json.load(f)
print(di['name'])
print(di['url'])
print(di['staffs'])
# <出力結果>
# Google Inc
# https://www.google.com
# [{'name': '田中', 'age': 40}, {'name': '佐藤', 'age': 60}]
★処理概要
1.jsonモジュールをインポートする。
2.open関数を使って対象ファイルを開く。
※第二引数に対象ファイルの文字コードを指定しないと、文字化けが発生する。
3.json.loadメソッドを使用し、2で開いたファイルの読み込みを行い、変数に代入する。
4.3の戻り値は辞書型となるため、キーを指定して値にアクセスする。
JSON形式ファイルへの書き出し
●読み込んだファイルを別のjsonファイルに書き出す
di_write.py
import json
# jsonファイルの読み取り(上のサンプルと同じ)
with open(r'C:\Users\User\Desktop\python3_practice\di_read.json', encoding="utf-8") as f:
di = json.load(f)
# 読み取ったファイルをtemp.jsonへ書き込み
with open(r'C:\Users\User\Desktop\python3_practice\tmp.json', 'wt') as f:
json.dump(di, f, indent=2, ensure_ascii=False)
# temp.jsonの読み込み
with open(r'C:\Users\User\Desktop\python3_practice\tmp.json') as f:
print(f.read())
●書き出したファイルの内容
tmp.json
{
"name": "Google Inc",
"url": "https://www.google.com",
"staffs": [
{
"name": "田中",
"age": 40
},
{
"name": "佐藤",
"age": 60
}
]
}
★処理概要
1.jsonモジュールをインポートする。
2.open関数を使って書き込み"元"のファイルを読み取る。
※第二引数に対象ファイルの文字コードを指定しないと、文字化けが発生する。
3.open関数を使って書き込み"先"のファイルを開く。
4.json.dumpメソッドを使用し、書き込みを行う。
※json.dump(読み取ったファイル, 書き込み先ファイル, 書き込み時のインデント数, 非ASCII文字のエスケープ)
インデント数や非ASCII文字のエスケープ等のキーワード引数は任意。
まとめ
・jsonモジュールを使用することで、簡単に読み書き操作ができる。
・キーワード引数を指定することで、文字化けを防いだり、見やすい形式で出力できる。