bazooka
Июль 29, 2009 18:18:14
как научить конфиг парсер получать массивы
т.е
config.ini
last = localhost
last = nonlocalhost
config = ConfigParser.ConfigParser()
config.read('config.ini')
print(config.get('connect', 'last'))
выведет nonlocalhost, а хотелось бы что-то типо
Ferroman
Июль 29, 2009 18:22:51
Проще всего - использовать
cfgparse
Griffon
Июль 29, 2009 19:41:54
Пройди по ссылке. Там документация есть.
bazooka
Июль 29, 2009 19:55:11
документацию я вижу, но на странице с типами(
http://cfgparse.sourceforge.net/cfgparse-option-type.html ) нет типа под мою задачу
ZZZ
Июль 30, 2009 01:02:38
cfgparse не знаю, не видел, но я в качестве конфига юзаю либо QSettings (ясно, что не подойдёт), либо yaml. Последний работает с большинством типов данных и приводит их во вполне читаемый вид.
Хотя я и согласен, использовать его там, где подразумевается правка конфига юзером, не стоит.
PooH
Июль 30, 2009 05:38:14
ZZZ
Хотя я и согласен, использовать его там, где подразумевается правка конфига юзером, не стоит.
Да ладно, вполне себе удобно ;) вон куча проектов конфиги в xml держат и то терпят
Rodegast
Июль 30, 2009 09:59:15
Всё довольно просто сначала преобразуешь список в строку, в качестве разделителя используя служебные символы, затем записываешь строку как параметр, а потом получаешь строку из конфига и преобразуешь её обратно в список.
ZZZ
Июль 30, 2009 19:19:10
PooH
Да ладно, вполне себе удобно вон куча проектов конфиги в xml держат и то терпят
XML все знают, а вот правила YAML пока сравнительно новые.
Rodegast
Всё довольно просто сначала преобразуешь список в строку, в качестве разделителя используя служебные символы, затем записываешь строку как параметр, а потом получаешь строку из конфига и преобразуешь её обратно в список.
Для чисел да… В вот для списка строк, строки ещё эскейпить надо.
Rodegast
Июль 31, 2009 16:35:49
Эскейпить не обязательно. Просто надо выбирать в качестве разделителя символы (их может быть несколько) которые точно не будут входить в состав строк.