一个非常简单的json后端配置管理器,用于python程序。
confjson的Python项目详细描述
confjson
这是什么?
python程序的一个非常简单、json支持的配置管理器。
为什么?
在我的各种项目中,我一直从零开始执行大致相同的事情,所以我认为是时候正确地执行它了。
用户指南
confjson.Config
类类似于链映射,通过同一目录中的两个json文件工作:
default.config.json
- 就confjson而言,默认配置文件是只读的。要添加默认设置,请手动编辑文件。
如果文件不存在,则不存在默认值。 - 此文件通常与代码一起受版本控制。
user.config.json
- 在运行时对配置所做的任何更改(和保存的)都将结束在此文件中。
- 如果文件不存在,将在保存更改时创建。
- 用户设置优先于默认设置。
- 此文件可能应添加到.gitignore或类似文件中。 两个文件的名称都是可配置的。以上是默认名称。
初始化
初始化配置对象时给定的路径可以是目录或文件。如果它引用一个文件,confjson将在包含目录中查找配置文件。原因是它允许使用__file__
模式在与程序相同的目录中查找配置文件。
config=confjson.Config(__file__)config=confjson.Config(".")config=confjson.Config("./configs",user_config_filename=f"{os.getenv('username')}.cfg",default_config_filename="global.cfg",)
数据访问
confjson配置中的项以dict的形式访问。
if"username"inconfig["user"]:do_something(config["user"]["username"])config["user"]["something_count"]+=1
也可以将项作为属性访问,除非它们与配置类的方法共享一个名称。
config.my_key="my value"
持久性
load()方法(重新-)使用来自后台json文件的值加载config对象。加载也是在初始化时执行的,因此这主要是为了丢弃更改。
config.load()
save()方法只将任何更改或添加的项保存到user.config.json。
config.save()
版本历史记录
1.3.0
- 使user.config.json和default.config.json的文件名都可配置。
- 向配置类添加了
use_placeholders
参数。当TRUE时,KeyError不会试图访问一个不存在的密钥,而是返回占位符。占位符的键分配将通过层次结构向上传播,并根据需要添加实际的dict。
1.2.2
- 添加了
keys()
、get(key, default)
和__contains__(key)
到configitemproxy,以修复先前更改引起的一些问题。
1.2.1
- 改进了属性样式访问并启用了混合样式访问。
1.2.0
- 已启用对配置项的属性样式访问。
1.1.0
- 修复了对嵌套dict的处理。
- 添加了检查以防止立即插入JSON不兼容的值,而不是在保存时失败。
- 添加了更多类似于dict的dunder方法。
1.0.1
- 更改了
__init__
以同时加载配置文件。
1.0.0
- 初次发布。