yaml模块实现数据驱动

本文为在霍格沃兹测试开发学社中学习到的一些技术(或者:本文为在霍格沃兹测试开发学社的学习经历分享),写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~

官网: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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值