YAML 简单介绍

简介

YAML[ Yet Another Markup Language ]英译过来,就是“另一门标志语言”。它是一种直观的,容易被人类阅读,以及被机器识别的数据格式。

它类似于XML和,但语法上,要比前者简洁很多。

具体感受一下,一个简单的 yml 文件:

Author:
  name: da宗熊
  age: 还年轻

通过解析器生成后,最终得到数据 :

{
  Author: {
    name: "da宗熊",
    age : "还年轻"
  }
}

格式

YAML文件,可以存储 map 或 array 对象。

map和array定义

map通过缩进来表示,其中的 key/map对,用 “:” 进行间隔。array通过减少”-“来表示。“#”代表注释。如下例子:

# 这一行注释,是不会输出的
Author:
  name: da宗熊 # 这也是注释,不会输出的
  desc:
    - 帅气
    - 阳光
    - 很好看

将得出数据:

{
  Author: {
    name: "da宗熊",
    desc: ["帅气", "阳光", "很好看"]
  }
}

map对象,也可以使用json方式定义:

Author: {name: da宗熊, age: 未知}

PS: JSON的语法是YAML1.2版的子集,同时非常接近YAML1.0与1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析

同样的,array对象,也可以类似的定义:

List1: [a, b, c]
# 与下面定义等价
List2:
  - a
  - b
  - c

空值

YAML有几种空值的表现方式,分别是 “null”、”~” 和 不填。

text1: null
text2: ~
text3: 

最后得出数据:

{text1: null, text2: null, text3: null}

字符串

字符串如果涉及到换行,可以使用 “|” 或 “>” 作为前缀标志。”|”表示下面的内容,换行; “>”表示,下面内容中,所有的换行,变为空格。

text1: |
  一段文字
  第二段文字
text2: >
  一段文字
  第二段文字

将得到:

{
  text1: "一段文字↵第二段文字",
  text2: "一段文字 第二段文字"
}

合并

可指定特定的数据,与数组中当前的数据进行合并:

merge:
  # 声明两个可引用的数据,这两个数据,也会输出
  - &CENTER {x: 1, y: 1}
  - &LEFT {x: 0, y: 1}
  - # 定义对象1
    <<: *CENTER
    label: 引入CENTER数据,与当前数据合并
  - # 定义对象2
    <<: [*CENTER, *LEFT] 
    label: 可引入多个数据
  - # 定义对象3
    center: *CENTER
    left:   *LEFT
    label:  也可以纯粹的引入,而不合并

将会输出:

{
  "merge": [
    {
      "x": 1,
      "y": 1
    },
    {
      "x": 0,
      "y": 1
    },
    {
      "x": 1,
      "y": 1,
      "label": "引入CENTER数据,与当前数据合并"
    },
    {
      "x": 1,
      "y": 1,
      "label": "可引入多个数据"
    },
    {
      "center": {
        "x": 1,
        "y": 1
      },
      "left": {
        "x": 0,
        "y": 1
      },
      "label": "也可以纯粹的引入,而不合并"
    }
  ]
}

最后

更多语法,可参考 这里

### Python 中 YAML 的使用教程 #### 安装 PyYAML 库 为了能够处理 YAML 文件,在 Python 环境下需先安装 `PyYAML` 库。可以通过执行如下命令完成库的安装[^2]: ```bash pip install pyyaml ``` #### 解析 YAML 文件 Python 提供了安全加载 YAML 文件的方法——`safe_load()` 函数,此函数能将 YAML 文档解析成 Python 字典对象以便进一步操作[^1]: ```python import yaml with open('example.yaml', 'r') as file: data = yaml.safe_load(file) print(data) ``` 这段代码展示了如何打开名为 `example.yaml` 的文件,并通过调用 `yaml.safe_load()` 方法读取其内容到变量 `data` 中。 #### 创建和保存 YAML 文件 当需要创建新的 YAML 文件或将现有数据结构序列化为 YAML 格式时,可利用 `dump()` 方法实现这一目标。这里展示了一个简单的例子来说明这一点[^3]: ```python from ruamel import yaml import os def generate_yaml_doc_ruamel(yaml_file): python_object = { 'file_type': 'ruamel_yaml', 'school': 'Example University', 'students': ['Alice', 'Bob'] } with open(yaml_file, 'w', encoding='utf-8') as f: yaml.dump(python_object, f, Dumper=yaml.RoundTripDumper) if __name__ == "__main__": current_path = os.path.dirname(__file__) output_yaml_path = os.path.join(current_path, 'output.yaml') generate_yaml_doc_ruamel(output_yaml_path) print("Write successful!") ``` 上述脚本定义了一组键值对组成的字典,并将其转储至指定路径下的新 YAML 文件中。 #### 实际应用场景 由于 YAML 是一种易于阅读的数据序列化标准,因此非常适合用于编写配置文件或测试案例集等场景。特别是在构建自动化测试框架过程中,常会选用 YAML 来存储参数设置或是描述具体的测试步骤[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值