写点什么

玩转数据处理利器:学会使用 YAML 文件轻松处理数据

  • 2024-01-23
    北京
  • 本文字数:1724 字

    阅读完需:约 6 分钟

测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。


YAML 文件处理

什么是 YAML 文件

YAML 全称其实是"YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写,所以它强调的是数据本身,而不是以标记为重点。


YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

为什么要使用 YAML 文件

其实 YAML 文件也是一种配置文件,但是相较于 ini,conf 配置文件来说,更加的简洁,操作简单,还能存放不同类型的数据,而像 ini 存储的值就都是字符串类型,读取之后还要手动转换。

YAML 的基本语法规则

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进时不允许使用 Tab 键,只允许使用空格。(可以将你的 ide 的 tab 按键输出替换成 4 个空格)

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • # 表示注释

YAML 的数据结构

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

  • 纯量(scalars):单个的、不可再分的值

对象类型

对象的一组键值对,使用冒号结构表示,会转换成 Python 中的字典。


YAML:




animals:dog
复制代码


Python:




{'animals': 'dog'}
复制代码


YAML:




person:{name:Tom, age:20, gender:male}
复制代码


Python:




{'person': {'name': 'Tom', 'age': 20, 'gender': 'male'}}
复制代码

数组类型

数组类型使用 - 为前缀,每个元素独占一行,通过缩进关系表示层级包含关系,会转换成 Python 中的列表。


YAML:




-one-two-three-four-five
复制代码


Python:




['one', 'two', 'three', 'four', 'five']
复制代码


YAML:




--1-2-3--4-5-6
复制代码


Python:




[[1, 2, 3], [4, 5, 6]]
复制代码

纯量类型

纯量类型是最基本的、不可再分的值;类似基本数据类型。


  • 字符串, 不需要使用双引号包裹

  • 布尔值,true,True,false,False 都可以

  • 整数

  • 浮点数

  • 时间,时间使用 ISO 8601 格式,时间和日期之间使用T连接,最后使用+代表时区

  • 日期,日期必须使用 ISO 8601 格式,即 yyyy-MM-dd

  • Null,~ 表示 Null


YAML:




int: 12float: 12.3string: petsbool: trueNone: nulltime: 2001-12-14t21:59:43.10-05:00date: 2018-03-21
复制代码


Python:




{ 'int': 12, 'float': 12.3, 'string': 'pets', 'bool': True, 'None': None, 'time': datetime.datetime(2001, 12, 14, 21, 59, 43, 100000, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))), 'date': datetime.date(2018, 3, 21)}
复制代码

复杂结构

YAML:




cool_list: - 10 - 15 - 12hard_list: - {key: value} - [1,2,3] - test: - 1 - 2 - 3twice_list: - - {a: AA} - {b: BB} - {c: CC}
复制代码


Python:




{ 'cool_list': [10, 15, 12], 'hard_list': [ {'key': 'value'}, [1, 2, 3], { 'test': [1, 2, 3] } ], 'twice_list':[ [ {'a': 'AA'}, {'b': 'BB'}, {'c': 'CC'} ] ]}
复制代码


Tips:有 : 后面的内容就解析成字典,有 - 后面的内容就解析成列表的元素

YAML 文件处理

Python 中,可以使用第三方模块 PyYAML 来处理 YAML 文件。

安装 PyYAML 模块



pip install pyyaml
复制代码

读取 YAML 文件

YAML 模块使用 safe_load() 方法读取 yaml 文件,在读取文件之前,和普通文件一样,需要先将文件打开。




import yaml# 读取 YAML 文件, 以前面复杂结果数据为例with open('data.yaml', 'r') as file: data = yaml.safe_load(file)# 处理读取到的数据print(data['cool_list'])print(data['hard_list'][2]['test'])
复制代码

写入 YAML 文件

YAML 模块使用 safe_dump() 方法向 yaml 文件中写入数据,在写入文件之前,也需要先将文件打开。




import yaml# 要写入的数据data = { 'key1': 'value1', 'key2': 'value2', 'key3': { 'key4': 'value4' }}# 写入 YAML 文件with open('output.yaml', 'w') as file: yaml.safe_dump(data, file)
复制代码





用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
玩转数据处理利器:学会使用 YAML 文件轻松处理数据_霍格沃兹测试开发学社_InfoQ写作社区