admin 管理员组文章数量: 887006
YAML 语言教程与使用案例
YAML语言教程与使用案例,如何编与读懂写YAML文件。
YAML概要
YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。
YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。
基本语法
1、大小写敏感
2、使用缩进表示层级关系
3、缩进时不允许使用Tab键,只允许使用空格
4、缩进的空格数不重要,只要相同层级的元素左侧对齐即可。【实际使用中建议两个空格作为一个层级的缩进】
5、# 表示注释,从这个字符一直到行尾,都会被解释器忽略
6、冒号,以冒号结尾除外,其他所有冒号后面必须有空格
7、短横线,表示列表项,使用一个短横线加一个空格;多个项使用同样的缩进级别作为同一列表
支持的数据结构
1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
3、字面量/纯量(数字、字符串、布尔值)(scalars):单个的、不可再分的值
YAML 组织结构
YAML 文件可以由一或多个文档组成(即相对独立的组织结构组成),文档间使用“---”(三个横线)在每文档开始作为分隔符(可选)。同时,文档也可以使用“...”(三个点号)作为结束符(可选)。如下图所示:
备注:如果只是单个文档,分隔符“---”可省略。
每个文档并不需要使用结束符“...”来表示结束,但是对于网络传输或者流来说,有明确结束的符号,有利于软件处理。(例如不需要知道流关闭就能知道文档结束)
Python中yaml模块的使用
Python pip 安装
如果未安装pip,则可以使用以下方法来安装:
# curl .py -o get-pip.py # 下载安装脚本
# python get-pip.py # 运行安装脚本 或则:python3 get-pip.py 根据使用的Python决定
# pip --version # 版本查看
用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本。
pip安装yaml与导入
安装pyyaml
# pip install pyyaml # 或者pip3 install pyyaml
检查是否安装成功:
1、命令行输入:python
2、再输入:import yaml
安装成功后,在脚本里导入的语句,都是 import yaml
YAML-对象数据类型
备注:之所以对yaml文件使用Python进行解析,是因为我们要测验yaml文件格式是否书写正确。
对象数据:是一组键值对,使用冒号结构表示。
单个对象文档文件
yaml文件
[root@docker02 yaml]# cat demo_01_obj.yml
---
name: zhang
age: 22
Python解析
[root@docker02 yaml]# cat demo_01_obj.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: zhangimport yamlfile_path = "./demo_01_obj.yml"
file = open(file_path, 'r')
ys = yaml.load(file.read(), Loader=yaml.Loader)
print ys
输出结果
[root@docker02 yaml]# python demo_01_obj.py
{'age': 22, 'name': 'zhang'}
多个对象文档文件
yaml文件,仔细对比下加了"---“和”..." 的区别
[root@docker02 yaml]# cat demo_02_obj.yml
---
name: zhang
age: 22
...
---
name: Jane
age: 20
key: child-key: valuechild-key2: value2
...
---
obj: {obj_key1: value1, obj_key2: value2}
...
本文标签: YAML 语言教程与使用案例
版权声明:本文标题:YAML 语言教程与使用案例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732356186h1534498.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论