PyYAML的官方文档。
安装:
pip install pyyaml
调用:
import yaml
简单的读取例子:
# example.yml
A:
- a:
1: 01
2: 10
3: 11
- b:
1: 01
2: 10
3: 11
B:
C:
Py代码参考:
import yaml
yml = open('example.yml', 'r')
Adict = yaml.full_load(yml) # = yaml.load(yml, Loader = yaml.FullLoader)
print(Adict)
加载器(Loader)可参考PyYAML github仓库的 Wiki。
输出的是一个Python的字典,可以看出里面还带有列表
{'A': [{'a': {1: 1, 2: 10, 3: 11}}, {'b': {1: 1, 2: 10, 3: 11}}], 'B': None, 'C': None}
输出字典的键值(key):
print(Adict.keys()) # 返回key迭代器:dict_keys(['A', 'B', 'C'])
print(list(Adict.keys())) # list转换为列表:['A', 'B', 'C']
for key in Adict.keys():
print(key) # 列表输出:A B C
处理A中的值(list):
for a in Adict['A']:
print(a)
for a1 in a.values():
print(a1)
输出:
{'a': {1: 1, 2: 10, 3: 11}}
{1: 1, 2: 10, 3: 11}
{'b': {1: 1, 2: 10, 3: 11}}
{1: 1, 2: 10, 3: 11}
可以看出YAML的对象构成了字典,数组构成了列表,只要按Python处理字典和列表的方法来就行。
再以上面的例子来说
Adict = {'A': [{'a': {1: 1, 2: 10, 3: 11}}, {'b': {1: 1, 2: 10, 3: 11}}], 'B': None, 'C': None}
output = open('output.yml', 'w')
output.write(yaml.dump(Adict))
output.close()
这样就能反过来得到yml文件了。
扩展学习:网上随便找的一个 YAML文件简介。