Python入門 (4) - YAMLファイルの読み書き
PythonでのYAMLファイルの読み書きを備忘録的にまとめました。
前回
1. YAML
「YAML」は、データフォーマットの1つです。「XML」よりも読み書きしやすく、わかりやすいのが特徴です。
以下の用途に向いています。
・設定ファイル
・ログファイル
・シリアライズ
2. YAMLの表記法
YAMLの表記法として、「シーケンス」「ハッシュ」「スカラー」の3つがあります。
◎ シーケンス
「シーケンス」はPythonでいうところの配列です。「シーケンス」を表現するには「- 値」と表記します。
- a
- b
- c
実行結果
['a', 'b', 'c']
ネストさせることもできます。
- a
-
- b1
- b2
- c
実行結果
['a', ['b1', 'b2'], 'c']
以下のように「[]」で横に並べて表記することも可能です。
[a, b, c]
実行結果
['a', 'b', 'c']
◎ ハッシュ
「ハッシュ」はPythonでいうところの辞書です。「ハッシュ」を表現するには「キー:値」と表記します。
A: a
B: b
C: c
実行結果
{'A': 'a', 'B': 'b', 'C': 'c'}
ネストさせることもできます。
A: a
B:
B1: b1
B2: b2
C: c
実行結果
{'A': 'a', 'B': {'B1': 'b1', 'B2': 'b2'}, 'C': 'c'}
ハッシュとシーケンスを組み合わせることもできます。
- name: Taro
age: 14
- name: Jiro
age: 13
- name: Hanako
age: 13
実行結果
[{'name': 'Taro', 'age': 14},
{'name': 'Jiro', 'age': 13},
{'name': 'Hanako', 'age': 13}]
以下のように「{}」で横に並べて表記することも可能です。
{A: a, B: b, C: c}
実行結果
{'A': 'a', 'B': 'b', 'C': 'c'}
◎ スカラー
スカラーは、数値や文字列や真偽値などのデータです。
・整数
・浮動小数点
・真偽値 (true/false, yes/no)
・Null値 (null, ~)
・日付 (yyyy-mm-dd)
・タイムスタンプ (yyyy-mm-dd hh:mm:ss [+-]hh:mm)
3. PyYAML
PythonでYAMLファイルの読み書きを行うには、「PyYAML」を使います。
$ pip install pyyaml
◎ YAMLファイルの読み込み
YAMLの読み込みを行うコードは、次のとおりです。
import yaml
# YAMLファイルの読み込み
with open('test.yaml') as file:
yml = yaml.safe_load(file)
print(yml)
◎ YAMLファイルの書き込み
YAMLの書き込みを行うコードは、次のとおりです。
import yaml
# YAMLファイルの書き込み
yml = [{'name': '太郎', 'age': 14},
{'name': '次郎', 'age': 13},
{'name': '花子', 'age': 13}]
with open('test.yaml', 'w') as file:
yaml.dump(yml, file)
- age: 14
name: "\u592A\u90CE"
- age: 13
name: "\u6B21\u90CE"
- age: 13
name: "\u82B1\u5B50"
日本語でYAML出力するには、codecsを使います。
import yaml
import codecs
# YAMLファイルの書き込み
yml = [{'name': '太郎 です', 'age': 14},
{'name': '次郎', 'age': 13},
{'name': '花子', 'age': 13}]
with codecs.open('test.yaml', 'w', 'utf-8') as file:
yaml.dump(yml, file, encoding='utf-8', allow_unicode=True)
- age: 14
name: 太郎 です
- age: 13
name: 次郎
- age: 13
name: 花子
次回
この記事が気に入ったらサポートをしてみませんか?