6

我想将以下.ini文件与ConfigParser.

[Site1]
192.168.1.0/24
192.168.2.0/24

[Site2]
192.168.3.0/24
192.168.4.0/24

不幸的是,调用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'

我的理解是预期的格式是key = value(avalue是必需的)。

我的问题:

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

我可以重新格式化配置文件,但想保留每个部分的简单原始条目列表 - 而不是用类似的key = value东西伪造格式range1 = 192.168.1.0/24

4

2 回答 2

11

使用allow_no_value参数:

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

根据ConfigParser.RawConfigParser(ConfigParser的基类):

allow_no_value为 true (默认:False)时,接受没有值的选项;为这些提供的值为None

注意:在 Python 2.7+、3.2+ 中可用

于 2013-11-14T07:55:37.053 回答
0

您需要将allow_no_value参数设置为True

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

另请查看ConfigObj作为替代方案。

于 2013-11-14T07:58:36.043 回答