Найти - Пользователи
Полная версия: configparser и кириллица
Начало » Python для новичков » configparser и кириллица
1
Игнат
есть конфиг со строчкой

test = True ; коммент

сейчас скрипт умирает без эксепшенов при попытке

self.config = configparser.RawConfigParser()
self.config.read('config.ini', ‘utf-8’)
self.config.getboolean('main', ‘test’)

а если заменить коммент на латиницу, то выдает

Not a boolean: True ; test

что тут не так? я читал доки - там написано что можно разделять inline-комменты ; и перед ; должен быть пробел
но не работает
Voroshek
почему не
test = True # коммент
Ed
Какая версия Питона? У меня на 2.6.6 и на 3.1 все работает:
~$ cat config 
[DEFAULT]
test = True ; бла-бла

~$ python --version
Python 2.6.6
~$ python -c "from ConfigParser import RawConfigParser; config = RawConfigParser(); config.read('config'); print config.getboolean('DEFAULT', 'test')"
True
Игнат
питон 3.2

>>почему не test = True # коммент
For backwards compatibility, only ; starts an inline comment, while # does not.

надо же, пример выше - в консоли тоже сработал
видимо у меня софт кривой

он настроен как cgi и почему-то не выводит никаких эксепшенов, просто умирает
Игнат
вдруг кому пригодится:

configparser в python 3.2 по умолчанию вообще не ищет inline-префиксы комментов
т.е. строку val = 123 ; comment он разделяет лишь на ключ и значение “123 ; comment”

из документации:
comment_prefixes, default value: ('#', ‘;’)
inline_comment_prefixes, default value: None

соответственно, коммент будет отделен только если указать в конструкторе префикс:
config = RawConfigParser(inline_comment_prefixes=(';'))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB