所以我试图在配置文件中使用字典来存储API调用的报告名称。所以像这样:
report = {'/report1': '/https://apicall...', '/report2': '/https://apicall...'}
我需要存储多个报告:apicalls到一个配置值。我正在使用ConfigObj。我在那里看过documentation,documentation,它说我应该能够做到。我的代码看起来像这样:
from configobj import ConfigObj
config = ConfigObj('settings.ini', unrepr=True)
for x in config['report']:
# do something...
print x
然而,当它命中config =它会引发加注错误。我有点迷失在这里。我甚至复制并粘贴了他们的例子和同样的东西,#34;提出错误"。我正在使用python27并安装了configobj库。
答案 0 :(得分:2)
如果您没有义务使用INI
文件,您可以考虑使用更适合处理dict
的其他文件格式 - 类似对象。查看您提供的示例文件,您可以使用JSON
个文件,Python有一个built-in模块来处理它。
示例:
JSON文件“settings.json”:
{"report": {"/report1": "/https://apicall...", "/report2": "/https://apicall..."}}
Python代码:
import json
with open("settings.json") as jsonfile:
# `json.loads` parses a string in json format
reports_dict = json.load(jsonfile)
for report in reports_dict['report']:
# Will print the dictionary keys
# '/report1', '/report2'
print report
答案 1 :(得分:1)
您的配置文件settings.ini
应采用以下格式:
[report]
/report1 = /https://apicall...
/report2 = /https://apicall...
from configobj import ConfigObj
config = ConfigObj('settings.ini')
for report, url in config['report'].items():
print report, url
如果您想使用unrepr=True
,则需要
答案 2 :(得分:1)
用作输入的配置文件很好:
report = {'/report1': '/https://apicall...', '/report2': '/https://apicall...'}
此配置文件用作输入
flag = true
report = {'/report1': '/https://apicall...', '/report2': '/https://apicall...'}
生成此异常,看起来就像你得到的那样:
O:\_bats>configobj-test.py
Traceback (most recent call last):
File "O:\_bats\configobj-test.py", line 43, in <module>
config = ConfigObj('configobj-test.ini', unrepr=True)
File "c:\Python27\lib\site-packages\configobj.py", line 1242, in __init__
self._load(infile, configspec)
File "c:\Python27\lib\site-packages\configobj.py", line 1332, in _load
raise error
configobj.UnreprError: Unknown name or type in value at line 1.
设置unrepr
模式后,您需要使用有效的Python关键字。在我的示例中,我使用了true
而不是True
。我猜你在Settings.ini
中有其他一些导致异常的设置。
unrepr选项允许您使用配置文件存储和检索基本的Python数据类型。它必须使用与普通ConfigObj文件略有不同的语法。不出所料,它使用Python语法。这意味着列表不同(它们用方括号括起来),并且必须引用字符串。
unrepr可以使用的类型是:
字符串,列表,元组
无,真,假 字典,整数,浮点数
多头和复数
答案 3 :(得分:1)
我有一个类似的问题,试图阅读ini文件:
[Section]
Value: {"Min": -0.2 , "Max": 0.2}
使用config parser和json的组合结束:
import ConfigParser
import json
IniRead = ConfigParser.ConfigParser()
IniRead.read('{0}\{1}'.format(config_path, 'config.ini'))
value = json.loads(IniRead.get('Section', 'Value'))
显然,其他文本文件解析器可以用作json加载,只需要json格式的字符串。我遇到的一个问题是字典/ json字符串中的键需要用双引号。