2010-08-06 2 views
22

Что лучше для создания файла настроек для программ Python, встроенного модуля (ConfigParser) или независимого проекта (ConfigObj)?Что лучше, ConfigObj или ConfigParser?

+1

Кроме того, является ли YAML хорошим? – Apocryphon

+2

«Лучше» зависит от контекста. Простой, сложный? Какие настройки? – detly

+3

Apocryphon: могу предложить вам изменить вопрос на что-то вроде: «Что такое con и pro's ConfigParser, ConfigObj, YAML» –

ответ

4

До сих пор я нашел ConfigParser достаточным в любое время, когда использовал его. Кроме того, это включенная батарея, а не сторонняя библиотека.

Хотя я должен признать, образцы кода в документации ConfigObj заставляют ConfigParser выглядеть действительно сосать в сравнении. Для скрипта, который сильно манипулирует файлами .ini, я бы предпочел это.

+0

Согласен. Я обнаружил, что функции, которые я отсутствовал в ConfigParser, находятся в ArgParse, который также является включенной батареей с 2,7. Где я имею доступный python 2.7, я переместился в ArgParse. – Hernan

17

Недавно я переключился с configparser на configobj, и я в восторге от этого.

Для меня большая разница - это validator. Это позволяет мне очень легко/кратко (1) определить тип и допустимые значения для каждой записи и (2) установить значения по умолчанию.

Эти две функции позволяют мне сэкономить много кода и предотвратить многого. Кроме того, нет лишних накладных расходов на использование configobj с точки зрения сложности моего кода, а библиотека довольно мала.

+0

Для записи я нашел лучшее введение в configobj, чтобы быть [этот учебник] (http://www.voidspace.org.uk/python/articles/configobj.shtml) - он немного устарел, но объясняет основные операции и философия лучше, чем документы, имхо. –

5

В зависимости от вашей версии Python может быть спорным, отвечает ли это на ваш вопрос, но после краткого просмотра ConfigParser и ConfigObj я установил для configparser версию Python 3 ConfigParser. There’s also a backported version on PyPI.

ConfigParser казался мне громоздким, может быть, даже смею сказать, что это неприлично, и с ConfigObj я столкнулся с эзотерической проблемой со списками (я бы предпочел, чтобы их можно было выровнять по вертикали, , и это не помогло, чтобы последняя версия была опубликована более двух лет назад. Однако API-интерфейс configparser выглядел настолько же шикарным, как и у ConfigObj (хотя и не как многофункциональный), и когда мы переходим на Python 3, я, вероятно, могу легко переключиться на встроенную версию.

Кстати, он отлично работает до сих пор.