config.py文件
"""config"""
import os
import yaml
import jmespath
import logging
class YamlUtil:
def __init__(self, config_path):
"""初始化配置类."""
self._cache = yaml.full_load(open(config_path, encoding="utf-8"))
self.fp = config_path
def get_config(self, cfg_path, defval=None):
cfg = self._cache
if cfg is None:
return defval
rv = jmespath.search(cfg_path, cfg)
if rv is None:
return defval
return rv
def flush(self):
'''将配置写入磁盘文件。'''
with open(self.fp, 'w+', encoding='utf8') as ffw:
yaml.dump(self._cache, ffw, allow_unicode=True,
indent=4, default_flow_style=False, sort_keys=False)
return True
def set_config(self, key, val, flush=False):
'''设置配置'''
# update the cache
if self._cache:
v = self._cache
for k in key.split('.')[:-1]:
if k not in v:
v[k] = {}
v = v[k]
v[key.split('.')[-1]] = val
# print(f"{self._cache}")
if flush:
self.flush()
def create_config():
pkg_root_dir = os.path.join(os.path.dirname(__file__), '..') # d:\Work\project\hongpu\dc_ai_app\config\..
temp_path = os.path.join(pkg_root_dir,
'config/config.yml') # d:\\Work\\project\\hongpu\\dc_ai_app\\config\\..\\config/config.yml
config = YamlUtil(temp_path)
return config
CONFIG = create_config()
if __name__ == '__main__':
config = YamlUtil(r'./config2.yml')
data = CONFIG.get_config("IP_list", "ok") # 查询配置
print(data, type(data))
# config.set_config("config.font_style.size", 10, True) # 修改配置
# rlt = CONFIG.get_plugin_def("ZoomSettings", "config_ui_def", "NotFound") # 获取设置项的ui配置
# print(rlt)
config.yml文件
server_list: # 这是一个字典,包含列表,嵌套字典。
- server: # 这是一个列表,包含字典
server_ip: "192.168.1.xx" #主机ip 这是一个字典
username : "admin" #用户名
password: "123456" #密码,没有填 ''
remote_name: "DESKTOP-xxxxB5A" # 远程机名,可通过此电脑属性查看 设备名称
file_info:
file_name: 全部结果_AI.csv #需要合并的csv文件名
file_path: D:/aaaaaaa #远程数据拉去到本地机的文件夹(可不用动)
dir_name: el_result # 本地机需要合并的文件夹名称
merge_file_name: 结果.csv # 所有数据保存的文件夹
local_computer_name: "WIN-9U4Bxxx4L8" #本地机名,可通过此电脑属性查看 设备名称
文章介绍了一个名为YamlUtil的Python类,该类用于读取、写入和管理YAML格式的配置文件。它使用了`jmespath`库来查询配置,并提供了便捷的方法如`get_config`和`set_config`进行操作。示例中展示了如何创建配置对象以及如何与`config.yml`文件交互。

被折叠的 条评论
为什么被折叠?



