読者です 読者をやめる 読者になる 読者になる

Pythonプログラミング入門・サンプル・チュートリアル

Pythonプログラミング入門・サンプル・チュートリアル

【Pythonプログラミング入門】YAMLの読み書き(サンプルあり)

この記事を読んでわかること

  • YAMLの読み込み
  • YAMLの書き込み

YAML

PyYAMLのインストール

pip3 install PyYAML

YAMLの読み書き

YAMLの読み込み

  • 悪意のあるYAMLファイルを読み込んだ場合、致命的なエラーになる。
  • 必ずsafe_load()を使う
import yaml

# ファイルの読み込み
with open('tom.yaml', 'rt') as fp:
    text = fp.read()

# YAML文字列の読み込み
data = yaml.safe_load(text)

# 文字列
name = data['name']
print(name['first'])

# 数値
passport = data['passport']
print(passport)

# 日付
date = data['dates']
print(date['birth'])
print(date['death'])

# 配列
hobbies = data['hobby']
for hobby in hobbies:
    print(hobby)

# 辞書
businesses = data['business']
for business in businesses:
    print(business['company'])
    print(business['from'])
    print(business['to'])

使用したYAMLファイル

sato.yaml

name:
  first: Ichiro
  last: Sato
dates:
  birth: 1980-01-01
  death: null
hobby:
  - Travel
  - Game
passport: 1234567890
business:
  - company: Example Company
    from: 2001-01-01
    to: 2005-12-31
  - company: Example Example Company
    from: 1999-01-01
    to: 2000-12-31

YAMLの書き込み

  • dump()を使うとYAML形式の文字列を出力できる
# YAMLの書き込み
import yaml
from datetime import date

yamada = {
    'name': { 'first': 'Taro', 'last': 'Yamada'},
    'dates': { 'birth': date(1940, 2, 3), 'death': date(1999,4,5)},
    'passport': 1010101010,
    'hobby': ['Jogging', 'Book']
}

yamada_yaml = yaml.dump(yamada, default_flow_style=False)

# ファイル作成
with open('yamada.yaml', 'wt') as fp:
    fp.write(yamada_yaml)

書き込まれたYAMLファイル

yamada.yaml

dates:
  birth: 1940-02-03
  death: 1999-04-05
hobby:
- Jogging
- Book
name:
  first: Taro
  last: Yamada
passport: 1010101010