在整个python应用程序中全局管理配置
gconf的Python项目详细描述
GCONF
在整个python应用程序中全局管理配置
概述
使用gconf,可以在模块作用域上加载yaml配置文件 这样它的值就可以从运行中的应用程序的任何地方访问。
用法
加载yaml文件
一个或多个yaml配置文件从类路径对象全局加载, 通常在程序的主要功能中。 生成的配置是所有加载配置的覆盖 以后来装载的为准。
加载单个配置文件:
gconf.load('conf.yml')
一次加载多个配置文件:
gconf.load('conf1.yml','conf2.yml')
依次加载多个配置文件:
gconf.load('conf1.yml')gconf.load('conf2.yml')
上面的两个例子产生了相同的结果。
在这两种情况下,config2
优先于config1
,并重写其值。
每次调用load
都返回一个实际加载的所有路径的列表。
从路径列表加载第一个配置:
gconf.load_first('conf1.yml','conf2.yml')
如果存在{{CD4}},则加载它,并且忽略{{CD5>}。 如果不存在^ {CD4}},则加载^ {CD5}}。
load_first
返回实际加载的路径。
如果找不到文件,所有加载函数都会引发一个FileNotFoundError
。
这可以通过设置关键字参数required=False
来防止。
手动添加值
可以从应用程序内部将dict添加到配置中。 这相当于加载具有相同内容的配置文件 如果值已经存在,则重写它们;如果不存在,则添加它们。
gconf.add({'parent':{'child':'new child'}})
警告:使用此功能,gconf模块可以作为全局变量的存储。
全局变量是一种代码味道,不应该使用!
请仅在您确切知道自己在做什么时使用gconf.add()
函数。
访问配置值
有几种方法可以寻址存储在配置中的值,
它们都使用模块级get
方法。
点符号
gconf.get('parent.child.some value')
字符串参数
gconf.get('parent','child','some value')
两者的混合
gconf.get('parent.child','some value')
顶级项作为字典
gconf.get()['parent']['child']['some value']
一些中间项作为字典
gconf.get('parent')['child']['some value']
要访问列表项,只需在路径中使用它们的索引
gconf.get('list.3')
默认值
get
方法接受一个default
参数,该参数返回
如果指定的项目不存在:
gconf.get('non-existing',default=default_value)
错误
如果在加载非现有文件和^ {CD15>}(默认值)时尝试,则引发^ {< CD9>}。
如果没有提供^ {< CD14>},尝试访问一个不存在的项会引发一个^ {CD18>}。
临时超控
部分配置可以通过上下文管理器临时重写。 通过一本字典,它覆盖了现存的词典:
withgconf.override_conf({'parent':{'child':'override_value'}}):gconf.get('parent.child')# => 'override_value'gconf.get('parent.child')# => 'original_value'
要临时删除部分配置,可以使用DELETED
常量:
withgconf.override_conf({'parent':{'child':gconf.DELETED}}):gconf.get('parent.child')# => KeyErrorgconf.get('parent.child')# => 'original_value'
重置
全局gconf dict可以完全重置。
gconf.reset()