Python: достойный формат файла конфигурации

Я хотел бы использовать формат файла конфигурации, который поддерживает пары «ключ-значение» и нестабильные, повторяемые структуры и который максимально упрощает синтаксис. Я представляю что-то вроде:

cachedir = /var/cache
mail_to = me@example.org

job {
   name = my-media
   frequency = 1 day
   source {
      from = /home/michael/Images

   source { }
   source { }       
}

job { }

Я был бы счастлив с чем-то, используя также значительные пробелы.

JSON требует слишком много явных синтаксических правил (кавычки, запятые и т. Д.). YAML на самом деле довольно хорош, но потребует, чтобы задания были определены как список YAML, который я нахожу немного неудобным для использования.

8
задан miracle2k 9 June 2010 в 16:27
поделиться

5 ответов

Я думаю, что YAML отлично подходит для этой цели, на самом деле:

jobs:
 - name: my-media
   ...

 - name: something else
   ...

Или, как dict вместо списка:

jobs:
  my-media:
    frequency: 1 day
    ...
  something-else:
    frequency: 2 day
    ...

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

13
ответ дан 5 December 2019 в 06:22
поделиться

Вы можете использовать систему конфигурации red-dove.

http://www.red-dove.com/config-doc/

0
ответ дан 5 December 2019 в 06:22
поделиться

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

  • Вложенные разделы (подразделы) на любой уровень
  • Список значений
  • Многострочные значения
  • Строковая интерполяция (подстановка)
  • Интегрирована с мощная система валидации
    • включая автоматическую проверку / преобразование типов
    • повторяющиеся разделы
    • и разрешение значений по умолчанию
  • При записи файлов конфигурации ConfigObj сохраняет все комментарии и порядок элементов и разделов
  • Многие полезные методы и параметры для работа с файлами конфигурации (например, метод перезагрузки)
  • Полная поддержка Unicode

ConfigObj используется Bazaar, Trac, IPython, matplotlib и многими другими крупными проектами Python, поэтому он кажется довольно зрелым и стабильным для я (хотя сам никогда не пользовался).

10
ответ дан 5 December 2019 в 06:22
поделиться

Я думаю, вам следует проверить библиотеку libconfig http://www.hyperrealm.com/libconfig/ . Для этого должны быть привязки python.

Другое решение - использовать формат json, который уже предоставляется самим python. Найдите в документации по модулю JSON.

2
ответ дан 5 December 2019 в 06:22
поделиться

Зачем изобретать колесо? Вы можете использовать:

http://docs.python.org/library/configparser.html

1
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

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