oslo_config学习小结

2.配置文件加载方法

2.1基础

配置文件指的是文件以.conf,.ini结尾等内容为配置项的文件,配置文件内容格式一般为

DEFAULT

option = value

sectiona

optiona = valuea

optionb = valueb

sectionb

optionc = valuec

optiond = valued

2.2加载方法(可能不全,欢迎批评指正)

2.2.1 oslo_config

功能 读取配置文件,可以一次读多个配置文件到一个对象

特点 相比于configparser开销较大,读取的配置项都要先注册(那要读100个是不是得写100个?晕...)

加载思路:

1.获取存放配置项的对象,假设叫conf

2.注册希望加载的配置项,先定义你要加载的配置项,比如类型,默认值,定义完了把这个定义的对象注册到第一步的conf对象中

3.给第一步的对象conf传一个配置文件路径,然后conf对象会去配置文件寻找我们刚才定义的配置项的值

用法(不唯一):

from oslo_config import cfg

conf = cfg.CONF # 首先需要一个配置文件对象用来存放我们想获取的配置项

读配置文件需要读取的配置项需要先注册,就是确认这个conf对象里要包含哪些配置项,然后指定文件去搜索配置项的值在文件中是否存在,存在即刷新值,不存在就使用下面opt的默认值default,这里opt的类型很多,可自行搜索,附些比较基本且全面的link。

OpenStack 配置解析库 oslo.config 的使用方法_wx60dc8ce39e154的技术博客_51CTO博客

python配置模块oslo.config_时空无限的博客-CSDN博客_oslo_config

python openstack oslo_config使用_OpenStack 实现技术分解 (7) 通用库 --- oslo_config_weixin_39942492的博客-CSDN博客

one_opt = cfg.StrOpt('option',default='option',help='option') # 单个需加载的配置项,此处要先定义,然后等会注册到conf对象中,最后读取配置文件到配置文件中获取配置项的值

many_opts = cfg.StrOpt('optiona',default='optiona',help='optiona'),cfg.StrOpt('optionb',default='optionb',help='optionb') # 多个配置项

sectiona_group = cfg.OptGroup(name='sectiona',title='sectiona')

定义结束 开始注册

conf.register_opt(one_opt)

conf.register_group(sectiona_group)

conf.register_opts(many_opts, sectiona_group)

注册结束,开始到配置文件加载配置项

conf(default_config_files='cfgfilea','cfgfileb','cfgfilec')

读取配置项值

print(conf.option)

print(conf.sectiona.optiona)

print(conf.sectiona.optionb)

2.2.2 configparser

功能 读单个配置文件

说明 configparser是一个模块,一般使用会用到其中两个类,分别是ConfigParser和RawConfigParser,我理解的两者的区别是前者可以识别配置文件中的引用,后者不支持

常用接口

python中RawConfigParser类、ConfigParser类、SafeConfigParser类中函数介绍_鲁小瓜的博客-CSDN博客_python safeconfigparser

几个例子

Python的ConfigParser Module 中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。 RawCn_lucy12012的博客-CSDN博客

python的ConfigParser模块 - 简书 (jianshu.com)

相关推荐
mldong4 小时前
给若依加审批流,不用 Flowable
java·spring boot·架构
Setsuna_F_Seiei4 小时前
前端转型 Agent 开发 04 之 MCP 与 Skill(赋予 Agent 更广工作能力)
前端·agent
Wang's Blog5 小时前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
刘发财5 小时前
前端2秒生成500页矢量PDF,rust真的强到没朋友
前端·javascript·rust
讳疾忌医丶6 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
M78佐菲6 小时前
51单片机学习笔记:ds18b20要点整理
linux·笔记·嵌入式硬件·学习·51单片机
郑州光合科技余经理6 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
毅炼6 小时前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
高亦真6 小时前
今天是学习嵌入式的第37天
linux·学习·算法
梦想平凡6 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理