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)

相关推荐
m0_7381207221 小时前
渗透测试基础——黑盒测试下的Web漏洞挖掘与利用解析(二)
服务器·前端·python·网络协议·安全·网络安全
weixin_4296302621 小时前
3.50 WebARNav:边缘辅助视觉定位的移动Web AR室内导航
前端·ar
心之伊始21 小时前
Spring Boot 接入 MCP 实战:用 Spring AI 调用本地工具的最小闭环
java·spring boot·agent·spring ai·mcp
Refrain_zc21 小时前
无触摸屏场景下的蓝牙交互:Android 纯按键蓝牙扫描配对与 A2DP/Headset 连接
java·蓝牙
yivifu21 小时前
CSS 自动级联编号有序列表完全指南
前端·css·c#·html·有序列表·级联编号
计算机安禾21 小时前
【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
java·数据库·算法
DIY源码阁21 小时前
JavaSwing学生选课系统 - MySQL版
java·数据库·mysql·eclipse
IronMurphy21 小时前
AI Agent学习day6 从 MCP 到 RAG 记忆:AI Agent 项目中的三块核心基础
人工智能·学习
砍材农夫21 小时前
物联网实战:Spring Boot + Netty 搭建 MQTT | MQTT 设备模拟器
java·spring boot·后端·物联网·struts·spring·netty