返回介绍

9.1 YAML 语言

发布于 2024-01-29 22:54:23 字数 1503 浏览 0 评论 0 收藏 0

YAML是一种用来表达数据序列的编程语言,它的主要特点包括:可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。Ansible与Saltstack环境中配置文件都以YAML格式存在,熟悉YAML结构及语法对我们理解两环境的相关配置至关重要。下面的示例定义了在master的不同业务环境下文件根路径的描述:

file_roots:
base:
 - /srv/salt/
dev:
 - /srv/salt/dev
prod:
 - /srv/salt/prod

本节主要通过YAML描述与Python的对应关系,从而方便读者了解YAML的层次及结构,最常见的是映射到Python中的列表(List)、字典(Dictionary)两种对象类型。下面通过块序列与块映射的示例详细说明。

9.1.1 块序列描述

块序列就是将描述的元素序列到Python的列表(List)中。以下代码演示了YAML与Python的对应关系:

import yaml
obj=yaml.load(
"""
- Hesperiidae
- Papilionidae
- Apatelodidae
- Epiplemidae
""")
print obj

本例中引用“-”来分隔列表中的每个元素,运行结果如下:

['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']

YAML也存在类似于Python块的概念,例如:

-
- Hesperiidae
- Papilionidae
- Apatelodidae
- Epiplemidae
-
- China
- USA
- Japan

对应的Python结果为:

[['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae'], ['China', 'USA', 'Japan']]

9.1.2 块映射描述

块映射就是将描述的元素序列到Python的字典(Dictionary)中,格式为“键(key):值(value)”,以下为YAML例子:

hero:
 hp: 34
 sp: 8
 level: 4
orc:
 hp: 12
 sp: 0
 level: 2

对应的Python结果为:

{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}

当然,YAML块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:

- hero:
  hp: 34
  sp: 8
  level: 4
- orc:
  hp:
  - 12
  - 30
  sp: 0
  level: 2

对应的Python结果为:

[{'hero': {'hp': 34, 'sp': 8, 'level': 4}}, {'orc': {'hp': [12, 30], 'sp': 0, 'level': 2}}]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文