yaml 通常用来存储数据,类似于json

安装:pip install ruamel.yaml

建一个空的yaml文件

写入数据

import os
from ruamel import yaml
# 将字典写入到yaml
data = {
'host1': '123',
'host2': 456,
'host3': {'asd': '123'},
'host4': [12, '234', ['wer', 234]],
'host5': {'asd': '123', 'eee': [12, '234', ['wer', 234]]}
} curpath = os.path.dirname(os.path.realpath(__file__)) # 当前脚本路径
yamlpath = os.path.join(curpath, "config.yaml") # 在当前脚本路径中,找到config.yaml文件 # 写入到yaml文件
with open(yamlpath, "w", encoding="utf-8") as f:
yaml.dump(data, f, Dumper=yaml.RoundTripDumper)

读取yaml文件

import os
from ruamel import yaml curpath = os.path.dirname(os.path.realpath(__file__)) # 当前脚本路径
yamlpath = os.path.join(curpath, "config.yaml") # 在当前脚本路径中,找到config.yaml文件
# 读取yaml文件
data = yaml.load(open(yamlpath, "r").read(), Loader=yaml.Loader)
print(data)
print(data['host4'][1])

封装起来以后好调用

import os
from ruamel import yaml class WRYaml:
""" yaml文件的读和写 """ def __init__(self):
""" 指定yaml文件的路径 """
self.configpath = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'config') def read_yaml(self, yaml_file='conf.yaml'):
""" 读取yaml里面里面的数据"""
try:
with open(os.path.join(self.configpath, yaml_file), "r", encoding='utf8') as f:
return yaml.load(f, Loader=yaml.Loader)
except Exception as error:
print(f'读取yaml失败,错误如下:{error}')
return False def write_yaml(self, data, yaml_file='conf.yaml', mode='w'):
""" 往yaml里面写入数据
yamlFile:yaml文件名
data:要写入的数据
mode:写入方式: w,覆盖写入, a,追加写入
将原数据读取出来,如果没有要加入的key,则创建一个,如果有,则执行key下面的数据修改
"""
try:
old_data = self.read_yaml(yaml_file) or {}
for data_key, data_value in data.items():
if not old_data.get(data_key):
old_data.setdefault(data_key, {})
for value_key, value_value in data_value.items():
old_data[data_key][value_key] = value_value
with open(os.path.join(self.configpath, yaml_file), mode, encoding="utf-8") as f:
yaml.dump(old_data, f, Dumper=yaml.RoundTripDumper)
return True
except Exception as error:
print(f'yaml文件写入失败,错误如下:\n{error}')
return False if __name__ == "__main__":
wryaml = WRYaml()
# 写入数据文件
data = {
'test': {'AAA': 134511, 'BBB': 333}
}
print(wryaml.write_yaml(yaml_file='conf.yaml', data=data))
# 读取数据文件
print(wryaml.read_yaml('conf.yaml'))

python接口自动化测试二十九:yaml配置文件的写和读的更多相关文章

  1. python接口自动化测试二十六:使用pymysql模块链接数据库

     #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/5/28 18:51# @Author  : StalloneYang#  ...

  2. python接口自动化测试二十五:执行所有用例,并生成HTML测试报告

        import requestsimport unittest class TestQQ(unittest.TestCase):    '''测试QQ号接口'''      # 此注释将展示到测 ...

  3. python接口自动化测试二十八:连接SQL sever操作

    1.中文乱码问题: (1).文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2).pymssql.connect连接串中charset是要跟你数据库的编码一样 ...

  4. python接口自动化测试二十四:上传多个附件,参数化

    # 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...

  5. python接口自动化测试二十二:文件下载

    文件下载类型: Content-Type: octets/stream   一般为文件类型:

  6. python接口自动化测试二十:函数写接口测试

    # coding:utf-8import requestsimport refrom bs4 import BeautifulSoup # s = requests.session() # 全局的s ...

  7. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  8. python接口自动化测试二:常用操作

    url = '接口地址' r = requests.get(url)                      # 发送get请求 print(r.status_code)               ...

  9. python接口自动化测试二十三:文件上传

    # 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...

随机推荐

  1. Cookie浅谈

    相信大家对Cookie多多少少都有点了解吧~~下面我来谈谈吧: 每个Cookie不超过4K数据,每个网站不超过20个Cookie,所有网站的Cookie总和不超过300个 虽然cookie已经是上世纪 ...

  2. JavaEE学习总结(十二)—MyEclipse开发工具与HTML

    一.MyEclipse MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能 ...

  3. 1、JDBC-Connection

    新建Maven工程 pom.xml <dependencies> <dependency> <groupId>mysql</groupId> <a ...

  4. Hbase记录-Hbase基础概念

    HBase是什么? HBase是建立在Hadoop文件系统之上的分布式面向列的数据库.它是一个开源项目,是横向扩展的. HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数 ...

  5. SpringRMI远程方法调用【原】

    Spring为各种远程访问技术的集成提供了工具类. 该小段引用自 http://www.open-open.com/lib/view/open1408957290478.html Spring远程支持 ...

  6. Python异常处理和进程线程-day09

    写在前面 上课第九天,打卡: 最坏的结果,不过是大器晚成: 一.异常处理 - 1.语法错误导致的异常 - 这种错误,根本过不了python解释器的语法检测,必须在程序运行前就修正: - 2.逻辑上的异 ...

  7. VUE2.0 饿了吗视频学习笔记(一):VUE示例data.json

    https://gitee.com/1981633/vue_study.git 源码下载地址,随笔记动态更新中有的同学找不到data.json,以下是data.json内容 { "selle ...

  8. mysql创建数据库指定编码格式

    CREATE DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  9. EF crud操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. luogu P2508 [HAOI2008]圆上的整点

    传送门 推荐去bzoj看个视频了解一下 不要妄想视频直接告诉你题解 但是视频告诉了你后面要用的东西 首先我们要求的是\(x^2+y^2=n^2(x,y\in Z)\)的\((x,y)\)对数,可以转化 ...