Как поставить точку с запятой в значении в python configparser?

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

Экранирование с помощью \ не работает.

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


person Daniel    schedule 28.11.2010    source источник
comment
Мой ConfigParser читает и записывает значения с помощью ;s...   -  person khachik    schedule 28.11.2010
comment
Вы пробовали ставить это в кавычки? (все значение)?   -  person mpen    schedule 28.11.2010


Ответы (3)


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

>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>> 
person gimel    schedule 28.11.2010
comment
Да и сейчас работает. Извините, я, должно быть, сделал что-то еще не так. - person Daniel; 30.11.2010

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

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

person hrehfeld    schedule 06.02.2012

Мой работает нормально. И заметил «Строки, начинающиеся с '#' или ';' игнорируются и могут быть использованы для предоставления комментариев».

person Kabie    schedule 28.11.2010