Yaml简述及文件读写

文章目录

  • 语法规则
  • 支持的数据结构
  • 锚点和引用
  • Yaml文件示例
  • Yaml 文件读取

语法规则

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用 Tab 键,只允许使用空格
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

支持的数据结构

  1. 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  2. 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  3. 纯量(scalars):单个的、不可再分的值
    • 字符串
    • 布尔值
    • 整数
    • 浮点数
    • None(Null/null/~)
    • 日期datetime(2021-01-01)

锚点和引用

  • 锚点&:标注一个内容,锚点名称自定义
  • 引用*:使用被标注的内容<<: *锚点名

Yaml文件示例

---
# page1
login: &md
  - id
  - 'test'
out:
  - css
  - None
  - *md
---
# page2
login:
  - css
  - '9'

Yaml 文件读取

#!/usr/bin/python3
# _*_coding=utf-8 _*_
# @author junwei
import yaml


def read_yaml(file_path='./yaml.yaml', page_num=0):
    """
    读取yaml文件(多页面)
    :param file_path:
    :param page_num: yaml中第几个页面的元素(从0开始)
    :return:指定页的数据
    """
    result = []
    file = open(file_path, encoding='utf-8')
    # 返回结果为一个生成器
    obj = yaml.load_all(file, Loader=yaml.FullLoader)
    for i in obj:
        result.append(i)
    return result[page_num]


def yaml_write(data, file_path='./yaml.yaml', mode='w'):
    """
    写入yaml文件
    :param file_path:
    :param data:
    :param mode:
    :return:
    """
    with open("%s" % file_path, "%s" % mode) as f:
        yaml.dump(data, f, encoding='utf-8', allow_unicode=True)


if __name__ == '__main__':
    data = {
     'Search_Data': {
     
        'search_test_002': {
     'expect': {
     'value': 'a'}, 'value': 'b'},
        'search_test_001': {
     'expect': [4, 5, 6], 'value': 456}}}
    yaml_write(data, 'a')

你可能感兴趣的:(自动化测试,Python,python,yaml)