从json文件加载配置
confj的Python项目详细描述
确认
包用于从json文件加载配置。配置路径可以导致 指向包含一堆json文件的目录,或指向单个json文件。内容是 解析并存储到config对象中,允许基于属性的访问 不同的选择。
安装
软件包可以与pip一起安装:
pip install confj
用法
这个实用程序的用法非常简单:导入Config
类并加载您的配置
使用load
方法。可以通过环境变量设置配置的路径
JSON_CONFIG_PATH
或直接传递给load
调用:
fromconfjimportConfigconfig=Config()config.load('/path/to/config')
如果配置的路径是一个目录,则每个文件都可以作为一个属性使用
对象的config
。否则,如果path是一个文件,config
对象将存储
从给定文件中解析JSON,允许通过属性访问数据。
可以在初始化步骤中加载配置,只需设置autoload
参数
到True
。从中加载配置的可选路径可能在
初始化。
fromconfjimportConfigconfig=Config(default_config_path='/path/to/config',autoload=True)
加载配置后,可以通过config
的属性访问它的选项。
对象,OTdict
-类似语法:
>>>config.username'user'>>>config['username']'user'>>>config.get('username')'user'
配置搜索优先级
- 如果直接调用作为参数传递的
config_path
方法, 然后使用此路径。 - 如果未提供
config_path
或使用autoload
选项, 然后使用初始化步骤中的default_config_path
。 - 最后一个选项是设置
JSON_CONFIG_PATH
环境值。如果搜索 在所有三个步骤中都失败,然后引发ConfigException
。
从python对象加载
可以从python对象加载配置:
fromconfjimportConfigconfig=Config()data={'username':'user','password':'pass'}config.loaf_from_obj(data)assertconfig.username=='username'assertconfig.password=='pass'
设置/更改配置数据
配置数据可以用set
方法更改或添加到当前配置:
fromconfjimportConfigconfig=Config()data={'username':'user','password':'pass'}config.loaf_from_obj(data)config.set('connection',{'port':5432,'host':'localhost'})assertconfig.connetcion.port==5432assertconfig.connection.host=='localhost'
可用方法
所有config
对象的方法名都以c_
开头,以避免
与可能的配置选项冲突
c_format
返回相当格式的sting,表示配置;c_pprint
将格式化配置输出到stdout;c_validate
根据给定的json模式验证配置。见Validation
下面部分。
验证
配置必须是有效的json对象,因此我们可以根据提供的
json模式。要使用配置验证,必须安装jsonschema
包。
这可以作为单独的步骤来完成,因为
pip install jsonschema
或者在confj
安装期间:
pip install confj[validation]
然后可以使用c_validate
方法进行配置验证:
fromconfjimportConfigconfig=Config(default_config_path='/path/to/config',autoload=True)schema={"type":"object"}is_valid=config.c_validate(schema)
默认情况下,c_validate
将返回False
的True
。看实际情况
验证错误只是将do_raise=True
作为附加参数传递,然后捕获
ValidationError
稍后:
fromconfjimportConfigfromjsonschemaimportValidationErrorconfig=Config(default_config_path='/path/to/config',autoload=True)schema={"type":"object"}try:config.c_validate(schema,do_raise=True)exceptValidationErroraserr:print(f'Looks like config is invalid: {err}')
要了解更多关于json验证的信息,可以访问 json-schema.org