霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 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: 12
float: 12.3
string: pets
bool: true
None: null
time: 2001-12-14t21:59:43.10-05:00
date: 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
- 12
hard_list:
- {key: value}
- [1,2,3]
- test:
- 1
- 2
- 3
twice_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)
标签:文件,yaml,list,YAML,玩转,使用,数据处理,data
From: https://blog.51cto.com/u_15605684/9380972