yaml

258 阅读2分钟

参考网址

www.runoob.com/w3cnote/yam…

前言

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。
它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML 的配置文件后缀为是.yaml或者.yml,如:config.yml

基本语法

-  大小写敏感
-  使用缩进表示层级关系
-  缩进不允许使用tab,只允许空格
-  缩进的空格数不重要,只要相同层级的元素左对齐即可
-  '#'表示注释

数据类型

YAML 支持以下几种数据类型:
-   纯量(scalars):单个的、不可再分的值
-   数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
-   对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

yaml对象

对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格。

总结

语法
结构层级通过空格缩进来展示。
列表里的项用"-"来代表,
字典里的键值对用":"分隔,注意,冒号后面要有一个空格,否则配置不会生效。

python读取yaml配置文件实例

   #首先安装yaml模块
   #pip install pyyaml
       
   #编写yaml配置文件 yaml_example.yaml
    name: 'junxi'
    age: 18
    spouse:
        name: 'Rui'
        age: 18

    # 由字典构成的列表
    children:
        - 
          name: Chen You
          age: 3
        - 
          name: Ruo Xi
          age: 2
              
     
 import yaml # 倒入需要的库

 f = open('./yaml_example.yaml')
 config = yaml.load(f) # 加载配置文件,如果你打印的话,config就是一个很大的dict
 
 # 可以知道config是一个字典格式
 print(type(config))  

 # 修改前的配置文件内容
 print(config)

 # 对配置文件进行修改
 # 在代码中,可以对配置进行修改
 config['age'] = 17
 config['children'][1]['age'] = 1
 # 这里可以知道,children的值是列表,然后读取第1个元素,第一个元素是dict

 # 打印修改后的配置文件内容
 print(config)

 程序输出的结果为:
 1 <type 'dict'>
 2 {'age': 18, 
    'spouse': {'age': 18, 'name': 'Rui'}, 
    'name': 'junxi', 
    'children': [ {'age': 3, 'name': 'Chen You'}, 
                  {'age': 2, 'name': 'Ruo Xi'} ] }

3 {'age': 17, 
   'spouse': {'age': 18, 'name': 'Rui'}, 
   'name': 'junxi', 
   'children': [ {'age': 3, 'name': 'Chen You'}, 
                 {'age': 1, 'name': 'Ruo Xi'} ] }