Python:如何读取只有键(没有值)的配置文件

Python:如何读取只有键(没有值)的配置文件,python,parsing,configuration-files,Python,Parsing,Configuration Files,我想将以下.ini文件与一起使用 不幸的是,调用read()会转储以下错误: import ConfigParser c = ConfigParser.ConfigParser() c.read("test.ini") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\ConfigParser.py", line 305, in

我想将以下
.ini
文件与一起使用

不幸的是,调用
read()
会转储以下错误:

import ConfigParser
c = ConfigParser.ConfigParser()
c.read("test.ini")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\ConfigParser.py", line 305, in read
    self._read(fp, filename)
  File "C:\Python27\lib\ConfigParser.py", line 546, in _read
    raise e
ConfigParser.ParsingError: File contains parsing errors: test.ini
        [line  2]: '192.168.1.0/24\n'
        [line  3]: '192.168.2.0/24\n'
        [line  6]: '192.168.3.0/24\n'
        [line  7]: '192.168.4.0/24\n'
导入配置解析器
c=ConfigParser.ConfigParser()
c、 读取(“test.ini”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\ConfigParser.py”,第305行,已读
自读(fp,文件名)
文件“C:\Python27\lib\ConfigParser.py”,第546行,已读
提高e
ConfigParser.ParsingError:文件包含解析错误:test.ini
[第2行]:'192.168.1.0/24\n'
[第3行]:'192.168.2.0/24\n'
[第6行]:'192.168.3.0/24\n'
[第7行]:'192.168.4.0/24\n'
我的理解是,预期的格式是
key=value
(需要
value

我的问题是:

  • ConfigParser
    是否可用于此类文件
  • 如果没有:是否有解析类似文件的好方法

我可以重新格式化配置文件,但希望每个部分保留一个简单、原始的条目列表,而不是将
key=value
格式伪装成
range1=192.168.1.0/24

使用
允许无值
参数:

import ConfigParser
c = ConfigParser.ConfigParser(allow_no_value=True)
c.read("test.ini")
根据(ConfigParser的基类):

allow\u no\u value
为true(默认值:False)时,不带值的选项 被接受;显示的这些值为


注意:在Python 2.7+、3.2+中可用您需要将
allow\u no\u值
参数设置为
True

import ConfigParser
c = ConfigParser.ConfigParser(allow_no_value=True)
c.read("test.ini")

也可以选择此选项。

ConfigParser在创建其对象时有一些选项。我现在不记得了。搜寻it@Farhadix当前位置我阅读了帖子中提到的文档。它们没有明确提到使用无值条目的可能性。然而,我发现在Python中有时会有隐藏的或不太明显的方法:)和ii)我希望有一个很好的替代品来代替普通的.ini文件,它将适合我的格式。对我的评论:事实证明,我显然需要提高我的阅读能力,因为文档确实说可以使用无价值的条目)太好了,谢谢!我不知道我怎么会在文件中漏掉这个。请不要重复答案。@falsetru:对不起,我开始写作时你的答案不在那里。这在我身上经常发生。这可能是一个元问题,但当这种情况发生时,我该怎么办?如果我的答案没有提供任何附加信息,并且我的答案是在别人的答案之后发布的,我会删除我的答案。但现在它有两张反对票。为什么呢?这是一个错误的答案吗?当我写下我的答案并点击post时,根据我掌握的所有信息,这个问题没有答案。@lalli ConfigObj不允许没有值的选项,就像ConfigParser通过
allow\u no\u value=True
所做的那样。
import ConfigParser
c = ConfigParser.ConfigParser(allow_no_value=True)
c.read("test.ini")