我使用python ConfigObj加载一个配置文件,如果配置文件在模式"cfgName=cfgvalue“中很好的话。
现在我需要这样写配置文件:
basket.ini
[favoFruit]
Apple
Orange能否(如何)通过favoFruit['Apple','Orange'] ( ConfigObj )将其作为一个列表加载?
当前,我只能在使用Invalid line at line "2"时获得错误消息cfgObj=ConfigObj('basket.ini')。
YAML或JSON可以做到这一点,我的问题是ConfigObj也能做到吗?
发布于 2012-02-10 08:28:13
configobj不支持使用列表的方式,而是作为逗号分隔的值:
[fruit]
favourite = Apple, Orange在代码中,您只需像往常一样访问该属性:
>>> cfg = configobj.ConfigObj('basket.ini')
>>> cfg['fruit']['favourite']
['Apple', 'Orange']有关更多信息,请查看此文章。
编辑:如果您确实需要支持配置文件的格式与您的问题完全相同,请注意,为它编写一个自定义解析器很容易:
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']示例输出:
“苹果”,“橙色”
https://stackoverflow.com/questions/9224546
复制相似问题