使用 python configparser 读取没有键但有值条目的配置文件

Reading configfiles with no key but value entries using python configparser

我有一个关于 python configparser 模块的问题。我正在使用 Python 3.x.

我有很多损坏的 .ini 文件,分别是我认为的缺陷。例如有些值与键无关,例如

[SESSIONS_id]
Session_a={F34B3238-EEE5-4006-B19C-AB8CC233D8F0}
Session_b={AF2D869B-0FB1-4287-A10E-82B0884E1CFC}
Session_c={F5A7FA65-2107-4B9B-A7C2-8C89C354D4FF}
={083465AF-DC9E-4FF8-A78F-CC1DF17C84B9}

我的问题是,只有 "allow no values" 的选项,我已经找到了,但是如何处理没有键值的 .ini 文件?

configparser不读取,如何修复?

提前致谢

您可以使用 comment_prefixes="=#;",因此以 = 符号开头的行也将被视为评论:

par = configparser.ConfigParser(comment_prefixes="=#;")
par.read("foo.ini")

print(list((par["SESSIONS_id"]).items()))

[('session_a', '{F34B3238-EEE5-4006-B19C-AB8CC233D8F0}'), ('session_b', '{AF2D869B-0FB1-4287-A10E-82B0884E1CFC}'), ('session_c', '{F5A7FA65-2107-4B9B-A7C2-8C89C354D4FF}')]

或者手动解析文件,首先写入临时文件,然后将其传递给 configparser:

import configparser
from tempfile import TemporaryFile
t = TemporaryFile("w+")
with open("foo.ini") as f:
    t.writelines(line for line in f if not line.startswith("="))
t.seek(0)
par = configparser.ConfigParser()
par.read_file(t)

print(list((par["SESSIONS_id"]).items()))
[('session_a', '{F34B3238-EEE5-4006-B19C-AB8CC233D8F0}'), ('session_b', '{AF2D869B-0FB1-4287-A10E-82B0884E1CFC}'), ('session_c', '{F5A7FA65-2107-4B9B-A7C2-8C89C354D4FF}')]