ConfigObj/ConfigParser по сравнению с использованием YAML для файла настроек Python

Который лучше для создания файла настроек для программ Python, встроенный модуль (ConfigParser) или независимый проект (ConfigObj) или использование формата сериализации данных YAML? Я услышал, что ConfigObj легче использовать, чем ConfigParser, даже при том, что это не встроенная библиотека. Я также считал, что PyYAML прост в использовании, хотя YAML занимает немного времени для использования. Простота реализации в стороне, которая является наилучшим вариантом для создания настройки/конфигурационный файл?

22
задан Apophenia Overload 9 August 2010 в 21:41
поделиться

2 ответа

Использование ConfigObj, по крайней мере, очень простое, а ini-файлы в general гораздо проще (и более широко используются), чем YAML. Для более сложных случаев, включая валидацию, значения по умолчанию и типы, ConfigObj предоставляет способ сделать это через валидацию configspec.

Простой код для чтения ini-файла с помощью ConfigObj:

from configobj import ConfigObj

conf = ConfigObj('filename.ini')
section = conf['section']
value = section['value']

Он автоматически обрабатывает списочные значения и позволяет многострочные значения. Если вы измените конфигурационный файл, вы сможете записать его обратно, сохранив порядок и комментарии.

См. эти статьи для получения дополнительной информации, включая примеры проверки типов:

9
ответ дан 29 November 2019 в 05:35
поделиться

ConfigParser имеет действительно плохой API, ConfigObj должен быть хорошим, но я никогда не использовал его, для ini-файлов я обычно использую свой собственный синтаксический анализатор.

Однако ini-подобные форматы в любом случае плохо обрабатывают различные типы, последовательности или рекурсивные сопоставления, поэтому я бы просто использовал yaml. Их легко читать и редактировать с помощью редактора, существует стандарт для анализа этих файлов, и у вас нет ни одного из упомянутых недостатков, которые есть у ini-подобных форматов.

5
ответ дан 29 November 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: