标签: configobj

什么更好,ConfigObj或ConfigParser?

哪个更适合为Python程序,内置模块(ConfigParser)或独立项目(ConfigObj)创建设置文件?

python configparser configobj

22
推荐指数
3
解决办法
7754
查看次数

为什么**kwargs不用python ConfigObj进行插值?

我在python中使用ConfigObj进行模板式插值.通过**展开我的配置字典似乎不进行插值.这是一个功能还是一个bug?有什么好的解决方法吗?

$ cat my.conf
foo = /test
bar = $foo/directory

>>> import configobj
>>> config = configobj.ConfigObj('my.conf', interpolation='Template')
>>> config['bar']
'/test/directory'
>>> '{bar}'.format(**config)
'$foo/directory'
Run Code Online (Sandbox Code Playgroud)

我希望第二行是/test/directory.为什么插值不能用**kwargs?

python kwargs configobj

7
推荐指数
1
解决办法
421
查看次数

使用StringIO for ConfigObj和Unicode

我正在尝试使用StringIO来提供ConfigObj.我想在单元测试中执行此操作,以便我可以动态地模拟配置"文件",具体取决于我要在配​​置对象中测试的内容.

我在配置模块中有很多事情要处理(我正在阅读其他应用程序的几个conf文件,聚合和"格式化"信息).但是,在测试中,我面临着来自地狱的unicode错误.我想我已经把我的问题归结为最小的功能代码,我已经提取并过度简化了这个问题的目的.

我正在做以下事情:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import configobj
import io

def main():
    """Main stuff"""

    input_config = """
    [Header]
    author = PloucPlouc
    description = Test config

    [Study]
    name_of_study = Testing
    version = 9999
    """

    # Just not to trust my default encoding
    input_config = unicode(input_config, "utf-8")

    test_config_fileio = io.StringIO(input_config)    
    print configobj.ConfigObj(infile=test_config_fileio, encoding="UTF8")

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

它产生以下回溯:

Traceback (most recent call last):
File "test_configobj.py", line 101, in <module>
    main()
File "test_configobj.py", line 98, in …
Run Code Online (Sandbox Code Playgroud)

python unicode configobj

5
推荐指数
1
解决办法
1274
查看次数

使用 python 的带有字典的配置文件

因此,我尝试在配置文件中使用字典来将报告名称存储到 API 调用中。所以像这样:

report = {'/report1': '/https://apicall...', '/report2': '/https://apicall...'}
Run Code Online (Sandbox Code Playgroud)

我需要存储多个报告:对一个配置值的 API 调用。我正在使用 ConfigObj。我读过那里的文档文档说我应该能够做到。我的代码看起来像这样:

from configobj import ConfigObj
config = ConfigObj('settings.ini', unrepr=True)
for x in config['report']:
    # do something... 
    print x
Run Code Online (Sandbox Code Playgroud)

然而,当它到达 config= 时,它会抛出一个引发错误。我有点迷失在这里。我什至复制并粘贴了他们的示例和相同的内容“引发错误”。我正在使用 python27 并安装了 configobj 库。

python dictionary config python-2.7 configobj

3
推荐指数
1
解决办法
3万
查看次数