从json文件加载配置

confj的Python项目详细描述


确认

包用于从json文件加载配置。配置路径可以导致 指向包含一堆json文件的目录,或指向单个json文件。内容是 解析并存储到config对象中,允许基于属性的访问 不同的选择。

Build StatusSay Thanks!

安装

软件包可以与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'

配置搜索优先级

  1. 如果直接调用作为参数传递的config_path方法, 然后使用此路径。
  2. 如果未提供config_path或使用autoload选项, 然后使用初始化步骤中的default_config_path
  3. 最后一个选项是设置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将返回FalseTrue。看实际情况 验证错误只是将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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素