Python读写yaml文件


Posted in Python onMarch 20, 2022

1.关于yaml

yaml基本语法规则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

2.yaml数据结构

YAML 支持的数据结构有三种:

  • 对象

键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
对象的一组键值对,使用冒号结构表示。

  • 数组

一组按次序排列的值,又称为序列(sequence) / 列表(list)
一组连词线开头的行,构成一个数组。

  • 纯量(scalars

单个的、不可再分的值
包括字符串,布尔值,整数,浮点数,Null,时间,日期

3.yaml文件格式

auth.login:
  data:
    name: '18888888883'
    password: jnyj123456
  url: https://XXXX-api-XXXX.zje.com/auth/login
headers:
  Accept: '*/*'
  Accept-Encoding: gzip, deflate, br
  Accept-Language: zh-CN,zh;q=0.9
  Connection: keep-alive
  Content-Length: '46'
  Content-type: application/json
  Host: dexin-api-test.zje.com
  Origin: https://XXXX-spa-XXX.zje.com
  Referer: https://XXXX-spa-XXX.zje.com/
  Sec-Fetch-Dest: empty
  Sec-Fetch-Mode: cors
  Sec-Fetch-Site: same-site
  User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML,
    like Gecko) Chrome/98.0.4758.80 Safari/537.36
  authorization: Bearer
  sec-ch-ua: '" Not A;Brand";v="33"
  sec-ch-ua-mobile: ?0000
  sec-ch-ua-platform: macOSis

学习产出:

class OpenYaml(object):

    def __init__(self):
        self.file_path = os.path.join(route("/DataYaml/yaml.yaml"))  # 拼接读取的文件路径

    def open(self, *args):
        '''
           args[0]: 字典名称
           args[1]: 字段值
           读取文件
        '''
        try:
            if len(args) == 2:  # 根据传值判断执行内容
                with open(self.file_path, "r") as f:  # 读取yaml
                    Json = f.read()  # 获取yaml
                    Dict = yaml.safe_load(Json)[args[0]]  # 提取制定内容
                if args[1] in Dict.keys():  # 判断key是否存在
                    logs.info(f"yaml文件,查找内容成功,内容:{Dict[args[1]]}")
                    return Dict[args[1]]
                else:
                    print(f"对应字段{args[1]}不存在...")
                    logs.info(f"对应字段{args[1]}不存在...")
            else:
                with open(self.file_path, "r") as f:
                    Json = f.read()
                    Dict = yaml.safe_load(Json)[args[0]]
                return Dict
        except Exception as e:
            print(f'读取yaml文件,报错:{e}')
            logs.info(f'读取yaml文件,报错:{e}')

    def Wri_file(self, *args):

        '''
        :param args: args[0] 接口字段、args[1] key、 args[2] value
        :return: None
        把字段写入yaml
        '''
        try:
            with open(self.file_path, encoding="utf-8") as f:  # 读取文件
                data = yaml.load(f.read(), Loader=yaml.FullLoader)  # 获取读取内容
            print(data[args[0]])
            if data is not None:  # 判断读取内容是否为空
                if str(data[args[0]][args[1]]) in str(data[args[0]]):  # 判断name是否存在在dict
                    data[args[0]][args[1]] = args[2]
                    with open(self.file_path, 'w', encoding="utf-8") as f:  # 写入
                        yaml.dump(data, stream=f, allow_unicode=True)
                else:
                    print("写入文件的字段不存在!写入失败...")
            else:
                logs.info("写入文件的返回值为空!不能写入...")
        except Exception as y:
            logs.info(f"写入文件失败:{y}")


if __name__ == "__main__":
    OpenYaml().Wri_file("headers", "Content-Length", "22")
    OpenYaml().open("auth.login", "data")

到此这篇关于Python读写yaml文件的文章就介绍到这了,更多相关Python读写yaml内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
目前最全的python的就业方向
Jun 05 Python
python实现傅里叶级数展开的实现
Jul 21 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python爬取成语接龙类网站
Oct 19 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
python 字典套字典或列表的示例
Dec 16 Python
python实现高斯投影正反算方式
Jan 17 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
PO模式在selenium自动化测试框架的优势
Python IO文件管理的具体使用
Python实现Excel文件的合并(以新冠疫情数据为例)
Python中三种花式打印的示例详解
Mar 19 #Python
Python学习之包与模块详解
Python requests用法和django后台处理详解
Mar 19 #Python
Python实现Hash算法
Mar 18 #Python
You might like
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
图片按比例缩放函数
2006/06/26 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jquery移动节点实例
2015/01/14 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
Python本地与全局命名空间用法实例
2015/06/16 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
python实现扫雷小游戏
2020/04/24 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
UNIX命令速查表
2012/03/10 面试题
施工安全标语
2014/06/07 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
医院营销工作计划
2015/01/16 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
python 经纬度求两点距离、三点面积操作
2021/06/03 Python