通用配置机制
项目描述
概述
infi.conf 是一个用于存储、加载和操作配置的通用机制。
使用方法
基础
给定一个类似这样的文件
>>> f = open("/tmp/my_file.cfg", "w") >>> _ = f.write(""" ... CONFIG = { ... "a" : { ... "b" : 2, ... } ... }""") >>> f.close()
获取配置对象是通过
>>> from infi.conf import Config >>> c = Config.from_filename("/tmp/my_file.cfg") >>> c.root.a.b 2
从其他来源加载
您也可以从字符串加载
>>> c = Config.from_string("CONFIG = {'a' : 2}") >>> c.root.a 2
设置路径
设置路径是通过设置项目完成的
>>> c['a'] = 3 >>> c.root.a 3
不允许设置之前不存在的路径,除非您分配一个配置对象
>>> c['b'] = 3 #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... CannotSetValue: Cannot set key 'b' >>> c['b'] = Config(2) >>> c.root.b 2
也可以通过 root 代理进行分配
>>> c.root.a = 3 >>> c.root.a 3
备份/恢复
每次您想要在更改之前保存配置并在以后恢复它时,都可以使用 backup() 和 restore() 来实现。它们像栈一样工作,因此它们推入和弹出状态
>>> c = Config({"value":2}) >>> c['value'] 2 >>> c.backup() >>> c['value'] = 3 >>> c['value'] 3 >>> c.backup() >>> c['value'] = 4 >>> c['value'] 4 >>> c.restore() >>> c['value'] 3 >>> c.restore() >>> c['value'] 2
实用工具
路径分配
您可以通过路径分配将配置分配给,例如
>>> c = Config(dict(a=dict(b=dict(c=3)))) >>> from infi.conf.utils import assign_path >>> assign_path(c, "a.b.c", 4) >>> c.root.a.b.c 4
表达式路径分配
在某些情况下,您可能希望接收如下字符串
a.b.c=2
并在配置的上下文中理解它们。这可能是由于它们来自命令行、覆盖文件或任何其他来源。 infi.conf 的实用工具提供了一个用于此的功能
>>> from infi.conf.utils import assign_path_expression >>> assign_path_expression(c, "a.b.c=2") >>> c.root.a.b.c '2'
请注意,在此方法中,类型始终为字符串。如果你的叶子节点已有值,可以使用deduce_type标志从当前值推导类型。
>>> c['a']['b']['c'] = 3 >>> assign_path_expression(c, 'a.b.c=666', deduce_type=True) >>> c.root.a.b.c 666
项目详情
关闭
infi.conf-0.0.16.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9a727193b22256f4f75efccb312fe833889f70efb77e781402a02ce65576e1aa |
|
MD5 | bf10155af69e92f1912e824f050ef8e3 |
|
BLAKE2b-256 | 1b941e27ea9b7796cfa9947c97aa46f9286bfeb54818475342e89691b9ac6c2a |