一个非常简单的json后端配置管理器,用于python程序。

confjson的Python项目详细描述


confjson

Build Status

这是什么?

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

  • 初次发布。

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

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像