YAML是一種可讀性很強的數據格式語言。正是因爲YAML良好的可讀性,其普遍引用於軟件配置中。python
YAML支持三種格式的數據,分別是:數組
下面結合Python來看幾個YAML的例子,這些自理沒有包含YAML的所有語法,可是足夠理解和編寫Ansible的Playbook.ruby
爲了解析YAML格式的文件,須要安裝第三方的PyYAML庫。直接使用pip安裝便可:oop
pip install PyYAML
在YAML中的數組,只須要用"-"將元素按序列出便可, 好比有一個data.yaml文件,內容以下this
--- #一個美味水果的列表 - Apple - Orange - Strawberry - Mango
使用PyYAML庫解析YAML文件很是簡單,以下spa
In [1]: import yaml In [2]: with open('data.yaml') as f: ...: print(yaml.load(f)) ...: ['Apple', 'Orange', 'Strawberry', 'Mango']
在YAML中,對象以"key:value"的形式進行定義,以下code
--- #覺得職工的記錄 name: Example Developer job: Developer skill: Elite
轉換爲python內部對象之後,結果以下:對象
{'skill': 'Elite', 'job': 'Developer', 'name': 'Example Developer'}
YAML中可使用多種方式指定布爾值,例以下面的格式都是合法的blog
---
create_key: yes
needs_agent: no
knows_oopL: True
like_emacs: TRUE
uses_cvs: false
轉換爲python代碼之後,對變量的取值進行了格式化ip
{'create_key': True, 'like_emacs': True, 'needs_agent': False, 'knows_oopL': True, 'uses_cvs': False}
YAML中的對象和數組也能夠任意嵌套
--- #一位職工記錄 name: heboan job: sa skill: Elite employed: True foods: - Apple - Orange - Strawberry - Mango languages: ruby: Elite python: Elite dotnet: Lame
將上面的YAML轉換爲Python的內部對象結果以下
{ 'languages': { 'python': 'Elite', 'dotnet': 'Lame', 'ruby': 'Elite' }, 'foods': [ 'Apple', 'Orange', 'Strawberry', 'Mango' ], 'name': 'heboan', 'employed': True, 'skill': 'Elite', 'job': 'sa' }
在YAML中定義字符串時,甚至都不須要使用單引號或雙引號,直接寫在文件建中便可:
str: this is a string
若是字符串中包含特殊字符,須要使用雙引號包含起來,如冒號
str: "somebody said I should put a colon here: so I did"
若是字符串的內容較長,可使用">"來摺疊換行,也就是說,接下來的縮進的內容都是這個字符串的一部分:
--- str: > my name is heboan cccc
轉換成python以下:
{'str': 'my name is heboan cccc\n'}