通用配置使用yml读取config

文章介绍了Python中的一个配置管理类YamlUtil,用于读取、写入和操作YAML格式的配置文件。它使用了yaml和jmespath库来实现配置的搜索和更新,并提供了一个创建配置文件的示例。配置文件包含了如服务器列表、文件信息等设置。
摘要由CSDN通过智能技术生成

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.dirname(__file__)  # d:\Work\project\hongpu\dc_ai_app\config\..
    temp_path = os.path.join(pkg_root_dir,'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的配置文件:

server_list:
  - server:
    server_ip: "192.168.xx.xx" #主机ip
    username : "admin" #用户名
    password: "xxxx" #密码,没有填 ''
    remote_name: "DESKTOP-HJxxxx" # 远程机名,可通过此电脑属性查看 设备名称

file_info:
  file_name: 全部结果_AI.csv #需要合并的csv文件名
  file_path: D:/aaaaaaa #远程数据拉去到本地机的文件夹(可不用动)
  dir_name: el_result # 本地机需要合并的文件夹名称
  merge_file_name: 结果_AI.csv  # 所有数据保存的文件夹
local_computer_name: "WIN-9U4BSQ3xxx"  #本地机名,可通过此电脑属性查看 设备名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值