用PyYAML库处理yml文件

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文件简介