本文为在霍格沃兹测试开发学社中学习到的一些技术(或者:本文为在霍格沃兹测试开发学社的学习经历分享),写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~
官网:https://pypi.org/project/PyYAML/
yaml是一种数据序列化格式,用于人类可读性与脚本语言的交互
基本语法:
- 大小写敏感
- 缩进时不允许使用tab,只能使用空格
- 缩进的空格数目不重要,只要相同层级的元素作对齐即可
- #表示注释,从这个字符到行尾一直会被注释
yaml支持的几种数据结构:
- 对象:键值对的集合,用:表示
- 数组:一组按照次序排列的值,用-表示
- 纯量:单个的,不可再分割的值,包含字符串,布尔值,整数,浮点数,Null,日期,时间
- 其中冒号后需要有空格
举例如下:
eg:
li = [1,2,3] 其对应的yaml语法如下:
- 1
- 2
- 3
dic = {"name":"alisa","age":13},其对应的yaml语法如下:
name: alisa
age: 12
嵌套字典和数组的数据:
data = [[{
"name": "技术部",
"name_en": "JISHU1",
"parentid": 1,
"order": 1,
"id": 2
},0], [{
"name": "",
"name_en": "JISHU2",
"parentid": 1,
"order": 2,
"id": 3
},40058]] 对应的yaml写法如下:
- - name: 技术部
name_en: JISHU1
parentid : 1
order: 1
id: 2
- 0
- - name: " "
name_en: JISHU2
parentid: 1
order: 2
id: 3
- 40058
其中yaml模块中经常使用的方法为:
yaml.safeload():该方法为加载yaml文件,其中参数为文件流
yaml.dump():该方法为将数据存储在一个yaml文件中,其中参数为需要写入的数据,文件流,其中allow_unicode = True,可以解决数据中包含中文时编码显示异常的问题
这两个方法均结合open()函数进行使用
import yaml
def test_yaml():
# data = [[{
# "name": "技术部",
# "name_en": "JISHU1",
# "parentid": 1,
# "order": 1,
# "id": 2
# },0], [{
# "name": "",
# "name_en": "JISHU2",
# "parentid": 1,
# "order": 2,
# "id": 3
# },40058]]
# data = {'name':'alisa','age':12}
# 打开这个文件以写的方式,其中encoding = tuf-8,如果包含中文时,需要在dump()指定allow_unicode = True
# with open("./test_data.yaml", 'w',encoding='utf-8') as f:
# yaml.dump(data, f, allow_unicode=True)
with open("./test_data.yaml",'r',encoding="utf-8") as f:
data = yaml.safe_load(f)
print(data)