首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python configObj可以处理没有'=‘的一行吗?

python configObj可以处理没有'=‘的一行吗?
EN

Stack Overflow用户
提问于 2012-02-10 08:02:44
回答 1查看 1K关注 0票数 2

我使用python ConfigObj加载一个配置文件,如果配置文件在模式"cfgName=cfgvalue“中很好的话。

现在我需要这样写配置文件:

basket.ini

代码语言:javascript
复制
[favoFruit]
Apple
Orange

能否(如何)通过favoFruit['Apple','Orange'] ( ConfigObj )将其作为一个列表加载?

当前,我只能在使用Invalid line at line "2"时获得错误消息cfgObj=ConfigObj('basket.ini')

YAML或JSON可以做到这一点,我的问题是ConfigObj也能做到吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-10 08:28:13

configobj不支持使用列表的方式,而是作为逗号分隔的值:

代码语言:javascript
复制
[fruit]
favourite = Apple, Orange

在代码中,您只需像往常一样访问该属性:

代码语言:javascript
复制
>>> cfg = configobj.ConfigObj('basket.ini')
>>> cfg['fruit']['favourite']
['Apple', 'Orange']

有关更多信息,请查看此文章

编辑:如果您确实需要支持配置文件的格式与您的问题完全相同,请注意,为它编写一个自定义解析器很容易:

代码语言:javascript
复制
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']

示例输出:

“苹果”,“橙色”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9224546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档