2

我需要在 python configparser 文件中的等号右侧指定密码,但分号是注释字符。

用 \ 转义不起作用。

如何传递字符串“foo;” 作为 configparser 中的值?

4

3 回答 3

3

ConfigParser 似乎有一个分号前有空格的错误:

>>> 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')]
>>>

请注意,最后一个版本仍然不正确,因为转义反斜杠仍然在那里......

于 2012-02-06T13:36:16.373 回答
2

一个简短的交互式会话显示分号被轻松读取。

>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>> 
于 2010-11-28T18:22:04.617 回答
1

我的工作正常。并注意到“以 '#' 或 ';'开头的行 被忽略,可用于提供意见。”

于 2010-11-28T17:58:08.440 回答