JSON と YAML

JSON

JSON は JavaScript Object Notation の略で、データを保存および転送するための軽量なフォーマットです。JSON は、サーバーから Web ページにデータが送信される際によく使用されます。

# JSON ファイルを読み込む:json.load() はファイルオブジェクトから JSON を解析する
import json
with open("filename.json", "r") as f:  # ファイルを読み取りモードで開く
    content = json.load(f)  # JSON を解析し、Python の dict/list を返す

次の内容で JSON ファイルを書き込む:

# JSON ファイルを書き込む:json.dump() は Python オブジェクトを JSON として書き出す
import json

content = {"name": "Joe", "age": 20}
with open("filename.json", "w") as f:  # ファイルを書き込みモードで開く
    json.dump(content, f, indent=2)  # 2 スペースのインデントで JSON を書き出す
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

Python の辞書を JSON ファイルに書き込むために使用される関数はどれですか?
A. json.write()
B. json.dump()
C. json.save()
D. json.export()

YAML

JSON と比較して、YAML は人間による保守性がはるかに高く、コメントを追加する機能を提供します。人間が編集する必要がある設定ファイルにとって便利な選択肢です。

YAML ファイルにアクセスするための主要なライブラリは 2 つあります。

これらを仮想環境でpip installを使用してインストールします。

前者は使いやすいですが、後者の Ruamel は YAML 仕様をはるかにうまく実装しており、例えばコメントを変更せずに YAML の内容を変更することができます。

次の方法で YAML ファイルを開きます:

# ruamel.yaml ライブラリを使用して YAML ファイルを読み込む
from ruamel.yaml import YAML

with open("filename.yaml") as f:
    yaml=YAML()  # YAML パーサーインスタンスを作成
    yaml.load(f)  # YAML を解析し、Python の dict/list を返す
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

JSON に対する YAML の利点は何ですか?
A. YAML ファイルはより小さい
B. YAML は解析が速い
C. YAML はコメントを許可し、人間にとってより読みやすい
D. YAML は Python に組み込まれている

Anyconfig

Anyconfigは非常に便利なパッケージで、基盤となる設定ファイル形式を完全に抽象化できます。JSON、YAML、TOML などから Python 辞書をロードできます。

次のようにインストールします:

pip install anyconfig

使用法:

# anyconfig: 様々な形式(JSON, YAML, TOML など)の設定ファイルをロードする
import anyconfig
conf1 = anyconfig.load("/path/to/foo/conf.d/a.yml")  # 形式を自動検出
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

anyconfig ライブラリは何を可能にしますか?
A. 形式を指定せずに様々な形式(JSON、YAML、TOML)の設定ファイルをロードすること
B. 異なる設定形式間で変換すること
C. 設定ファイルの構文を検証すること
D. 設定ファイルを暗号化すること

関連リンク