Date:2016-03-25
Title:13.Python筆記之Pyymal模塊使用
Tags:Python
Category:Python
博客地址:www.liuyao.me
作者:劉耀
YAML
YAML是一種用來表達數據序列的編程語言,它的主要特點包括:可讀性強、語法簡單明了、支持豐富的語言解析庫、通用性強等。Ansible與Saltstack環境中配置文件都以YAML格式存在。下面是saltstack的配置:
file_roots:
base:
- /srv/salt/
dev:
- /srv/salt/dev
prod:
- /srv/salt
要通過YAML描述與Python的對應關系,從而方便讀者了解YAML的層次及結構,最常見的是映射到Python中的列表(List)、字典(Dictionary)兩種對象類型。下面通過塊序列與塊映射的示例詳細說明。
1.塊序列描述
塊序列就是將描述的元素序列到Python的列表(List)中
例如:
#/!/usr/bin/env python
#__liuyao__
import yaml
data=yaml.load("""
- one
- two
- three
- four
""")
print (data)
用“-”來分隔列表中的每個元素,運行結果如下:
# python yamltest.py
['one', 'two', 'three', 'four']
或者:
#/!/usr/bin/env python
#__liuyao__
import yaml
data=yaml.load("""
-
- one
- two
- three
- four
-
- list
- dict
- set
""")
print (data)
顯示如下:
python yamltest.py
[['one', 'two', 'three', 'four'], ['list', 'dict', 'set']]
#返回的是list類型
2.塊映射描述
塊映射就是將描述的元素序列到Python的字典(Dictio-nary)中,格式為“鍵(key):值(value)”。
例:
#/!/usr/bin/env python
#__liuyao__
import yaml
data=yaml.load("""
hero:
liuyao: 21
mayun: 55
""")
print (type(data))
print (data)
結果:
<type 'dict'>
{'hero': {'liuyao': 21, 'mayun': 55}}
YAML塊序列與塊映射是可以自由組合在一起的,它們之間可以相互嵌套,通過非常靈活的組合,可以幫助我們描述更加復雜的對象屬性,
案例:
#注意空格和縮進
#/!/usr/bin/env python
#__liuyao__
import yaml
data=yaml.load("""
- hero:
liuyao: 21
mayun: 55
- name:
liuyao:
- 12
- 33
""")
print (data)
結果:
[{'hero': {'liuyao': 21, 'mayun': 55}}, {'name': {'liuyao': [12, 33]}}]
例如:
新建install.yaml文件
輸入一下內容
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name1: Jenny Smith
age1: 12
#yaml讀
import yaml
with open('disk.sls')as f:
s=yaml.load(f)
print(s)
{'spouse': {'name': 'Jane Smith', 'age': 25}, 'name': 'Tom Smith', 'children': [{'name': 'Jimmy Smith', 'age': 15}, {'age1': 12, 'name1': 'Jenny Smith'}], 'age': 37}
將字符串轉入yaml格式放入yaml文件
file='test.yaml'
data={'host': {'ip01': {'two': '192.168.1.254', 'one': '192.168.1.2'}, 'ip00': '192.168.1.1'}, 'soft': {'apache': 2.2, 'php': 5.3, 'mysql': 5.2}}
f=open(file,'w')
yaml.dump(data,f)
f.close()
完畢!