简介

在实际开发过程中,我们可能需要读取一些配置文件的配置信息,例如ini、yaml、property等格式,本文将讲述怎么去获取和设置yaml文件的相关参数。

示例yaml文件

test1:
test2-1: 5
test2-2: 130000
test2-3:
test3-1: 123
test3-2: 256

使用到的模块

pip3 install PyYAML

读写yaml文件

import yaml, os, json

class YamlUtil():

    def __init__(self, yaml_path):
self.yaml_path = yaml_path def get_yml_data(self, is_modify=False, *key_names):
"""
读取yaml配置文件并根据对应层级的key获取对应的value
适用于两层数据
:param: key_names: 需要查询的yaml文件的key关键字,从左向右依次
:return: result: 根据key值返回对应value,不传key则直接返回所有, 没有对应key则返回None
"""
with open(self.yaml_path, "r", encoding="utf-8") as f:
content = f.read()
yaml_content = yaml.safe_load(content)
if is_modify:
return yaml_content
try:
for key_name in key_names:
yaml_content = yaml_content.get(key_name, None)
return yaml_content
except Exception as e:
print(f"get_yml_data error:{e}")
return None def set_yaml_data(self, value, *key_names):
"""
设置yaml文件中的相关属性
:param: value:修改后的值
:param: key_names: 需要修改的yaml文件的key关键字,从左向右依次
"""
yaml_content = self.get_yml_data(True, key_names)
print(f'yaml_content:before:{yaml_content}')
key_name = ''
for item in list([[item] for item in key_names]):
key_name += str(item)
print(f'key_name:{key_name}')
command = "yaml_content" + key_name + '=' + str(value)
print(f'command:{command}')
# exec:将字符串转换成python代码执行
exec(command)
print(f'yaml_content:after:{yaml_content}')
with open(self.yaml_path, mode='w', encoding='utf-8') as f:
f.write(yaml.safe_dump(yaml_content)) if __name__ == '__main__':
YAML_PATH = os.path.join(os.path.dirname(__file__), 'test.yaml')
yamlUtil = YamlUtil(YAML_PATH)
print(yamlUtil.get_yml_data("test1", "test2-1"))
print(yamlUtil.get_yml_data("test1", "test2-3", "test3-1"))
yamlUtil.set_yaml_data(123, "test1", "test2-1")
yamlUtil.set_yaml_data(111, "test1", "test2-3", "test3-1")

获取属性采用的是将数据读取出来成字典,然后直接取出对应属性即可,设置属性采用的是读取原有数据,使用字典更新对应值的方式,不过是采用exec执行拼接的字符串方式。

python 读取yaml文件的更多相关文章

  1. Python读取Yaml文件

    近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现 ...

  2. 使用python读取yaml文件

    在做APP测试时,通常需要把参数存到一个字典变量中,这时可以将参数写入yaml文件中,再读取出来. 新建yaml文件(android_caps.yaml),文件内容为: platformName: A ...

  3. python读取yaml文件,在unittest中使用

    python读取yaml文件使用,有两种方式: 1.使用ddt读取 2,使用方法读取ddt的内容,在使用方法中进行调用 1.使用ddt读取 @ddt.ddt class loginTestPage(u ...

  4. python读取yaml配置文件

    支持多种语言:python.js.golang.java.c.c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下 ...

  5. Python读取txt文件

    Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...

  6. python读取中文文件编码问题

    python 读取中文文件后,作为参数使用,经常会遇到乱码或者报错asii错误等. 我们需要对中文进行decode('gbk') 如我有一个data.txt文件有如下内容: 百度 谷歌 现在想读取文件 ...

  7. Python读取SQLite文件数据

    近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内 ...

  8. Python读取xlsx文件

    Python读取xlsx文件 脚本如下: from openpyxl import load_workbook workbook = load_workbook(u'/tmp/test.xlsx') ...

  9. Python 读取WAV文件并绘制波形图

    aa Python 读取WAV文件并绘制波形图 ffmpeg -i test_pcm_mulaw.wav -f wav -codec:a pcm_s16le -ar 8000 -ac 1 out.wa ...

随机推荐

  1. kNN-识别手写数字

    最后,我们要进行手写数字分类任务,但是现在我们是用kNN算法,可能会比较慢 首先,完整地看完2.3.1和2.3.2的内容,然后找到trainingDigits和testDigits文件夹,大致浏览下 ...

  2. 栈在go语言中实现,及解决388.文件的最长绝对路径的思路

    今天在LeetCode刷每日一题,遇到了388. 文件的最长绝对路径的思路,这道题让我想到了系统的目录是栈结构,果然在题解中找到了栈的解法(暴力半天没出来,跑去看题解了QWQ). 所以我就捎带复习了一 ...

  3. linux篇-linux下ffmpeg安装

    1最近自己搭建的公司服务端转化视频不可以,我想应该是ffmpeg的问题,头痛 准备这两个源码包 2安装,先解压 ffmpeg-4.1.4.tar.bz2 yasm-1.3.0.tar.gz 3先安装y ...

  4. K8S Flannel网络插件

    0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件.组件.由于Kubernetes通过开放的CNI ...

  5. 云开发中的战斗机 Laf,让你像写博客一样写代码

    各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? 理想的需求应该是可以在线编写.调试函数,不用重启服务,随时随地在 Web 上查看函数 ...

  6. 即时通讯IM,是时代进步的逆流?看看JNPF怎么说

    JNPF快速开发平台所包含的第四个重要的开发框架是即时通讯沟通工具.即时沟通工具的目的是让各大企事业单位在各种业务工作流程环境下实现实时无缝协同办公,打破信息数据孤岛,形成高效的层级流转审批和各流程环 ...

  7. C语言 - 基础数据结构和算法 - 单向链表

    听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...

  8. el-select数据量过大引发卡顿,怎么办?

    本文分享自华为云社区<解决el-select数据量过大的卡顿的两种思路与一种实施方案>,作者: KevinQ. 经典问题:在测试环境好好的,怎么到正式环境就不行了? --本文:数据量变了. ...

  9. 【2022-06-16】Pycharm的下载与安装使用

    一.Pycharm软件简介 产品简介 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Pyt ...

  10. tmux(Terminal MultipleXer)命令使用

    作用:命令行多窗口显示:命令行程序与本机脱离 1 安装tmux (1)redhat.centos系统 yum install tmux (2)ubuntu系统 apt-get install tmux ...