Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2011 10:40:29

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

configparser и кириллица

есть конфиг со строчкой

test = True ; коммент

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

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

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

Not a boolean: True ; test

что тут не так? я читал доки - там написано что можно разделять inline-комменты ; и перед ; должен быть пробел
но не работает



Отредактировано (Май 16, 2011 11:01:18)

Офлайн

#2 Май 16, 2011 14:57:15

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

configparser и кириллица

почему не

test = True # коммент



python3 openSUSE-43Leap

Отредактировано (Май 16, 2011 14:58:37)

Офлайн

#3 Май 16, 2011 15:11:24

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

configparser и кириллица

Какая версия Питона? У меня на 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



Офлайн

#4 Май 16, 2011 18:02:50

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

configparser и кириллица

питон 3.2

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

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

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



Отредактировано (Май 16, 2011 18:05:41)

Офлайн

#5 Май 17, 2011 20:26:23

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

configparser и кириллица

вдруг кому пригодится:

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=(';'))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version