better config——一个更好的python配置

betterconfig的Python项目详细描述


betterconfig提供了一种更方便和可扩展的配置语言, 以及一个基于python内置configparser格式的简单接口 有一个非常简单的接口来加载配置。

类型强制样板吸入

像许多配置语言一样,configparser将所有值视为字符串, 也就是说,当您进行如下配置时:

[config]
foo = 1
bar = a,list,of,strings
baz = just a plain old string

最后得到的样板文件如下:

from ConfigParser import ConfigParser
MAP = {
    'foo': int,
    'bar': lambda x: x.split(','),
    'baz': str,
}
c = ConfigParser()
c.read('./foo.cfg')
config = {k:MAP[k](v) for k,v in c.items('config')}

你真的不希望这样做:

[config]
foo = 1
bar = ['a', 'list', 'of', 'strings']
baz = "just a plain old string"

把地图放下?

import betterconfig
config = betterconfig.load('./foo.cfg')['config']

betterconfig支持ast.literal_eval支持的所有文本类型: 字符串、数字、元组、列表、dict、布尔值和none。

配置更灵活,模块

配置不太灵活

我们想要一种配置语言,它可以像 django或flask(几乎是可扩展的),但初始化不那么神奇, 比这样的东西稍微安全一些:

import importlib
settings = importlib.import_module('settings')

因此,我们需要一个可以执行以下操作的配置:

top_level  = 'variables defined outside of sections'
include    = ['./include.cfg', 'include.d/*.cfg']

[section]
namespaced = True

我们不想迭代部分或项,我们只想 将其加载到dict:

import betterconfig
settings = betterconfig.load('./fancy.cfg')

如果你真的喜欢.符号,你总是可以做一些事情 愚蠢得像制作一个模块settings.py,它可以做一些神奇的事情,比如:

import betterconfig
globals().update(betterconfig.load('./fancy.cfg'))

安装

betterconfig项目位于github,可通过pip获得。

从pip

安装v0.3
sudo pip install betterconfig==0.3

从源安装v0.3

curl https://github.com/axialmarket/betterconfig/archive/version_0.3.tar.gz | tar vzxf -
cd betterconfig
sudo python setup.py install

运行测试

betterconfig测试需要py.test,可以通过pip安装。

sudo pip install pytest==2.5.2
py.test test_betterconfig.py

作者和贡献者

马修故事<;matt.story@axial.net>;
jon rosebaugh<;jon@inklesspen.com>;

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

推荐PyPI第三方库


热门话题
java Hibernate为不同的联接生成相同的别名   java无法在使用JSTL的会话中对属性使用方法访问器   java如何获取元素在ArrayList中出现的次数   java类必须声明为抽象类或实现抽象方法错误   在Java(Eclipse)中使用Python脚本   java有可能获得接口的泛型类型吗?   java中调用构造函数的方法   输出中的java精度错误   java使用JWS JNLP为JavaFX应用程序创建桌面图标   java如何执行批处理文件,通过单击JMenuItem在windows上重新启动服务?   启动Oracle Coherence时出现java SocketException   java Alpha3语言代码到alpha2的转换   java如何在spring日志中包含服务类的模块?SPRING+CXF   java变量whitepsace处于负查找状态?