Подтвердить что ты не робот

Конфигурация ConfigParser и импорта

ConfigParser - это много обсуждаемая конфигурация ванили парсер для Python.
Однако вы можете просто import config, где config.py имеет код python, который устанавливает параметры конфигурации.

Каковы плюсы и минусы этих двух способов настройки? Когда я должен выбирать каждый?

4b9b3361

Ответ 1

Самая большая проблема, которую я вижу с помощью import config, заключается в том, что вы не знаете, что произойдет, когда вы ее импортируете. Да, вы получите набор символов, на которые естественно ссылаются, используя интерфейс стиля .. Но код в файле конфигурации также может делать who-know-what. Теперь, если вы полностью доверяете своим пользователям, то разрешить им делать то, что они чувствуют в конфигурационном файле, возможно, хорошо. Однако, если у вас есть неизвестные количества или вы хотите защитить пользователей от себя, то наличие файла конфигурации в более традиционном формате будет более безопасным и безопасным.

Ответ 2

Это полностью зависит от ваших потребностей и целей для script. Один из способов действительно не "лучше", просто другой. Для очень подробного обсуждения большинства парсеров конфигурации pythons (включая модули ConfigParser и config):

Python Wiki - ConfigParserShootout

Ответ 3

"import config" очень прост, гибкий и мощный, но, поскольку он может что-то сделать, может быть опасно, если config.py не находится в безопасном месте.

Ответ 4

ИМО это сводится к вопросу личного стиля. Вы хотите, чтобы третьи стороны отредактировали вашу конфигурацию? Если это так, возможно, имеет смысл иметь более "естественный" стиль конфигурации a la ConfigParser, который не является техническим и не может быть слишком далеко над головами вашей целевой аудитории.

Многие популярные проекты, такие как Fabric и Django используйте "собственный" стиль конфигурации, который по существу является просто модулем Python. У Фабри есть fabfile.py, а Django имеет settings.py.

В целом у вас будет гораздо больше гибкости, используя собственный подход к импорту модуля, просто потому, что вы можете делать все, что хотите в этом файле, включая определение функций, классов и т.д., потому что это просто еще один модуль Python, который вы Импорт.