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'}