Игнат
Май 16, 2011 10:40:29
есть конфиг со строчкой
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
Май 16, 2011 14:57:15
Какая версия Питона? У меня на 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
Игнат
Май 16, 2011 18:02:50
питон 3.2
>>почему не test = True # коммент
For backwards compatibility, only ; starts an inline comment, while # does not.
надо же, пример выше - в консоли тоже сработал
видимо у меня софт кривой
он настроен как cgi и почему-то не выводит никаких эксепшенов, просто умирает
Игнат
Май 17, 2011 20:26:23
вдруг кому пригодится:
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=(';'))