我使用python ConfigObj加载配置文件,如果配置文件的格式为“ cfgName = cfgvalue”,则效果很好。
现在,我需要以这种方式写入配置文件:
购物篮
[favoFruit]
Apple
Orange
可以(如何)通过ConfigObj将其加载为列表
favoFruit['Apple','Orange']
?当前,当使用
Invalid line at line "2"
时,我只能得到错误消息cfgObj=ConfigObj('basket.ini')
YAML或JSON可以做到这一点,我的问题是ConfigObj可以做到吗?
最佳答案
configobj
不支持您尝试使用它们的方式列出,而是以逗号分隔的值:
[fruit]
favourite = Apple, Orange
在代码中,您只需照常访问该属性:
>>> cfg = configobj.ConfigObj('basket.ini')
>>> cfg['fruit']['favourite']
['Apple', 'Orange']
有关更多信息,请查看此article。
编辑:如果您确实需要支持与问题格式完全相同的格式的配置文件,请注意,为它编写自定义解析器会很容易:
import re
from collections import defaultdict
def parse(f):
data = defaultdict(list)
section = None
for line in f:
line = line.strip()
if not line:
continue
match = re.match('\[(?P<name>.*)\]', line)
if match:
section = match.group('name')
else:
data[section].append(line)
return data
cfg = parse(open('basket.ini'))
print cfg['favoFruit']
输出示例:
['Apple','Orange']
关于python - python configObj可以处理没有'='的行吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9224546/