Reputation: 30072
I would like to use the following .ini
file with ConfigParser
.
[Site1]
192.168.1.0/24
192.168.2.0/24
[Site2]
192.168.3.0/24
192.168.4.0/24
Unfortunately a call to read()
dumps the following error:
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'
My understanding is that the expected format is key = value
(a value
is required).
My questions:
ConfigParser
usable for such files?I can reformat the config file but would like to keep a simple, raw list of entries per section -- as opposed to faking the key = value
format with something like range1 = 192.168.1.0/24
Upvotes: 7
Views: 4333
Reputation: 6303
you need to set the allow_no_value
parameter to True
import ConfigParser
c = ConfigParser.ConfigParser(allow_no_value=True)
c.read("test.ini")
Also check out ConfigObj as an alternative.
Upvotes: 0
Reputation: 369494
Use allow_no_value
parameter:
import ConfigParser
c = ConfigParser.ConfigParser(allow_no_value=True)
c.read("test.ini")
According to ConfigParser.RawConfigParser
(base class of ConfigParser):
When
allow_no_value
is true (default: False), options without values are accepted; the value presented for these is None.
NOTE: available in Python 2.7+, 3.2+
Upvotes: 12