Python下解析YAML文件

Python中解析YAML文件主要使用到两个方法,load()和dump()方法,使用方式类似于Python的pickle。熟悉在Python中解析YAML文件,对使用Python做saltstack自定义插件开发时会有很大的帮助

load

测试

[root@PolarSnow saltstack]# cat eg.yaml 
name: Tom Smith
age: 37
spouse:
  name: Jane Smith
  age: 25
children:
  - name: Jimmy Smith
    age: 15
  - name1: Jenny Smith
    age1: 12

[root@PolarSnow saltstack]# cat py_yaml.py
#!/usr/bin/env python
#coding=utf-8
import yaml

with open('eg.yaml', 'r') as loadfile:
    print yaml.load(loadfile)

[root@PolarSnow saltstack]# python py_yaml.py
{'age': 37, 'spouse': {'age': 25, 'name': 'Jane Smith'}, 'name': 'Tom Smith', 'children': [{'age': 15, 'name': 'Jimmy Smith'}, {'age1': 12, 'name1': 'Jenny Smith'}]}

关键代码

#!/usr/bin/env python
#coding=utf-8
import yaml
with open('eg.yaml', 'r') as loadfile:
    print yaml.load(loadfile)

dump

测试

[root@PolarSnow saltstack]# cat eg.yaml 
name: Tom Smith
age: 37
spouse:
  name: Jane Smith
  age: 25
children:
  - name: Jimmy Smith
    age: 15
  - name1: Jenny Smith
    age1: 12

[root@PolarSnow saltstack]# cat py_yaml.py 
#!/usr/bin/env python
#coding=utf-8
import yaml
with open('eg.yaml', 'r') as loadfile:
    y = yaml.load(loadfile)
    print y
with open('eg1.yaml','w') as dumpfile:
    dumpfile.write(yaml.dump(y))
    print yaml.dump(y)

[root@PolarSnow saltstack]# python py_yaml.py 
{'age': 37, 'spouse': {'age': 25, 'name': 'Jane Smith'}, 'name': 'Tom Smith', 'children': [{'age': 15, 'name': 'Jimmy Smith'}, {'age1': 12, 'name1': 'Jenny Smith'}]}
age: 37
children:
- {age: 15, name: Jimmy Smith}
- {age1: 12, name1: Jenny Smith}
name: Tom Smith
spouse: {age: 25, name: Jane Smith}

[root@PolarSnow saltstack]# cat eg1.yaml 
age: 37
children:
- {age: 15, name: Jimmy Smith}
- {age1: 12, name1: Jenny Smith}
name: Tom Smith
spouse: {age: 25, name: Jane Smith}

关键代码

#!/usr/bin/env python
#coding=utf-8
import yaml

#打开一个yaml文件将其解析,再将解析后的结构再转成yaml写入到新的文件
with open('eg.yaml', 'r') as loadfile:
    y = yaml.load(loadfile)
    print y

with open('eg1.yaml','w') as dumpfile:
    dumpfile.write(yaml.dump(y))
    print yaml.dump(y)

你可能感兴趣的:(Python下解析YAML文件)