pip install pyyaml
import yaml
普通的yaml文件加载使用:基本上,这样用就够了。
yaml.load(open(filename), Loader=yaml.FullLoader)
yaml.load_all(open(filename), Loader=yaml.FullLoader)
yaml加载完数据到python中,为{} 或者是list
如果是load_all加载出来的,是一个生成器,使用list(yaml.load_all(...)) 可以得到一个列表。
load 和load_all的区别:
load会把一个文件视为一个yaml
load_all会把一个yaml文件中的重复的部分视为一个yaml。
如以下数据,load加载为一个dict, load_all加载,会分为两个dict的generate。
password: by: "link text" locator: "aaa" password2: by: "link text" locator: "aaa" #结果不同如下 load: {'password': {'by': 'link text', 'locator': 'aaa'}, 'password2': {'by': 'link text', 'locator': 'aaa'}} load_all: [{'password': {'by': 'link text', 'locator': 'aaa'}, 'password2': {'by': 'link text', 'locator': 'aaa'}}]
pyyaml还提借了对应load相应的dump方法,有dump, dump_all。与load操作相反。
pyyaml另外还支持直接把yaml数据加载到类中。不过这有一个问题,需要把类路径在文档中指明。我觉得这对于配置文件来说,个人觉得不是一个好选择,我不打算用它。
加载类例子。
yaml.load(""" ... --- !Monster ... name: Cave spider ... hp: [2,6] # 2d6 ... ac: 16 ... attacks: [BITE, HURT] ... """)
官方文档
https://pyyaml.org/wiki/PyYAMLDocumentation
关于pyyaml loader:
https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation
如果不指定loader,会在运行时报错。为了让它不报错,而且当代码都是自己写的时候,可以直接使用yaml.FullLoader来阻止它报错。