gpt4 book ai didi

python - python configObj可以处理没有 '='的行吗

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:31 27 4
gpt4 key购买 nike

我使用 python ConfigObj 加载配置文件,如果配置文件采用模式“cfgName=cfgvalue”,它会很好用。

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

篮子.ini

[favoFruit]
Apple
Orange

可以(如何)通过 ConfigObj 将其加载为列表 favoFruit['Apple','Orange']

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com