YML配置文件简单总结

394 阅读2分钟

引言

  • 本文主要是简单介绍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实现简单,解析简单适合在脚本语言中使用,但是不同语言间的数据流通不建议使用。