Как мне поставить точку с запятой в значении в python configparser? - PullRequest
2 голосов
/ 28 ноября 2010

Мне нужно указать пароль справа от знака равенства в файле configparser для Python, но точка с запятой - это символ комментария.

Выход из \ не работает.

КакМогу ли я передать строку "Foo;"как значение в configparser?

Ответы [ 3 ]

2 голосов
/ 06 февраля 2012

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

Обратите внимание, что последняя версия по-прежнему неверна, потому что там находится обратная косая черта ...

1 голос
/ 28 ноября 2010

Короткий интерактивный сеанс показывает, что точка с запятой читается без проблем.

>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>> 
1 голос
/ 28 ноября 2010

Шахта работает отлично. И заметил "Линии , начинающиеся с" # "или"; " игнорируются и могут быть использованы для предоставления комментариев. «

...