あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

PythonでYamlを扱いたい(pyyamlを使う)

機械学習でパラメータを変えて実験したいときなど、yamlで管理しておくと便利です。
読み込んだパラメータをアンパック(**)でモデルに渡すことができます。

コード

yamlファイルの読み込みは、safe_loadを持ちます。
jsonモジュールなどとは異なるので注意が必要です。

#pipはpyyaml
import yaml

with open('yaml.yml','r') as f:
    obj = yaml.safe_load(f)

#loadsは存在しない
yaml_txt = """
- a
- b
- c
"""

obj = yaml.safe_load(yaml_txt)

書き込む場合

書きこむ場合は、jsonなどと同様にdumpを使います。
あまり使うことはないかもしれませんが、チューニング結果などを書き込みたい場合などに覚えておくと便利です。

obj = {"a":[1,2,3]}

with open('res.yml','r')  as f:
    yaml.dup(obj,f)

その他の読み込み

objをファイル上で---によってわけている場合、safe_load_allで、複数のオブジェクトにすることができます。

objs_txt = """
- a
- b
- c
---
- d
- e
- f
"""

objs = [ obj for obj in yaml.safe_load_all(objs_txt)]

print(objs)
#[['a','b','c'],['d','e','f']]