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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
Python中特殊函数集锦
Jul 27 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
python对验证码降噪的实现示例代码
Nov 12 Python
Python如何实现定时器功能
May 28 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
vue实现微信分享功能
2018/11/28 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python lambda和Python def区别分析
2014/11/30 Python
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
在Python中COM口的调用方法
2019/07/03 Python
手写一个python迭代器过程详解
2019/08/27 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
python爬虫如何解决图片验证码
2021/02/14 Python
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
大学生简单自荐信
2013/11/10 职场文书
农村葬礼主持词
2014/03/31 职场文书
和睦家庭事迹
2014/05/14 职场文书
普通党员对照检查材料
2014/09/24 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
欢迎新生标语2015
2015/07/16 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS
Java 超详细讲解hashCode方法
2022/04/07 Java/Android