Reputation: 2092
I need to specify a password on the right side of the equals sign in a Python configparser file, but semicolon is the comment character.
Escaping with \ does not work.
How can I pass the string "foo;" as a value in configparser?
Upvotes: 2
Views: 3020
Reputation: 481
ConfigParser seems to have a bug with spaces in front of semicolons:
>>> import StringIO
>>> import ConfigParser
>> p = ConfigParser.ConfigParser()
>>> s1 = StringIO.StringIO('[foo]\nbla=bar;baz\n')
>>> p.readfp(s1)
>>> p.items('foo')
[('bla', 'bar;baz')]
>>> s2 = StringIO.StringIO('[foo]\nbla=bar ;-) baz\n')
>>> p.readfp(s2)
>>> p.items('foo')
[('bla', 'bar')]
>>> s3 = StringIO.StringIO('[foo]\nbla=bar \;-) baz\n')
>>> p.readfp(s3)
>>> p.items('foo')
[('bla', 'bar \\;-) baz')]
>>>
Note that the last version is still incorrect, because the escape backslash is still in there...
Upvotes: 4
Reputation: 86502
A short interactive session shows the semicolon is read without trouble.
>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>>
Upvotes: 2
Reputation: 10663
Mine works fine. And noticed "Lines beginning with '#' or ';' are ignored and may be used to provide comments. "
Upvotes: 1