引言
- 本文主要是简单介绍
yml文件的作用以及结构介绍。 - yml文件也是个人在用anaconda创建虚拟环境,看到可以使用
-f来指定yml配置文件来创建才知道这种常见方法,所以本文是对yml做一个简单的总结。
yml与yaml的区别
- YAML是"YAML Ain’t a Markup Language"的缩写,其是一种标记语言但是强调的是以数据为中心,而不是以标记语言为中心,YMAL的配置文件后缀为
.yml(仅供参考)YAML 是一种可读性高,以数据为中心的数据序列化格式。可以表达 对象(键值对),数组,标量 这几种数据形式 能够被多种编程语言和脚本语言解析。
- 那什么是序列化呢?
- 序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。
YAML语法与格式
- 格式:对象和键值对
- 其实就是通过
k:v的方式表示对象或者键值对,但是与python的字典不一样的是冒号后面必须有一个空格
- 其实就是通过
Name: xiaoming
Age: 19
Gender: man
- 通过缩进来表示对象的多个属性:
People:
Name: xiaoming
Age: 19
Gender: man
# 也可以写成
people: {Name: xiaoming, Age: 19, Gender: man}
- 当想表示数组或者列表的元素的使用采用
-表示,以-开头的航标是构成一个数据
- 1
- 2
- 3
# 同一类别用数组表示
people:
- xiaoming
- xiaohua
- xiaoli
# 另一种表示形式就是列表里来表示
people:[xiaoming,xiaohua,xiaoli]
# 也可以表示多个属性
People:
-
Name: xiaoming
Age: 19
Gender: man
-
Name: xiaoli
Age: 12
Gender: woman
# 同样也可以横向表示:
people: [{Name: xiaoming, Age: 19, Gender: man}, {Name: xiaoli, Age: 12, Gender: woman}]
- 这里也有其他编程语言中的不同数据格式,只是叫标量,包含整数,浮点数,字符串,布尔值,Null,时间,日期
- 其表示形式和上面一样,也是键值对的形式来表示,也可以用数组来表示
boolean:
- true
- false
int: 123
- 还有一个新概念就是,用
&建立锚点,*表示引用锚点,<<表示合并到当前数据,啥意思呢,看下面例子
peolple: &maodian
name: xiaoming
age: 18
work:
class: 1
<<: *maodian
# 就代表
peolple: &maodian
name: xiaoming
age: 18
work:
class: 1
name: xiaoming
age: 18
# 同样也可以表示一个简单的属性
- &age 17
- 18
- 19
- *age
# 相当于:
- 17
- 18
- 19
- 17
- 注:虽然YAML实现简单,解析简单适合在脚本语言中使用,但是不同语言间的数据流通不建议使用。