Я хотел бы использовать формат файла конфигурации, который поддерживает пары «ключ-значение» и нестабильные, повторяемые структуры и который максимально упрощает синтаксис. Я представляю что-то вроде:
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, который я нахожу немного неудобным для использования.
Я думаю, что 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 для своих файлов настроек, например.
Вы можете использовать систему конфигурации red-dove.
Поскольку встроенный в Python модуль configparser
, похоже, не поддерживает вложенные разделы, я сначала попробую ConfigObj . (См. Вводное руководство здесь ). Согласно его домашней странице, это набор функций, о которых стоит упомянуть:
ConfigObj используется Bazaar, Trac, IPython, matplotlib и многими другими крупными проектами Python, поэтому он кажется довольно зрелым и стабильным для я (хотя сам никогда не пользовался).
Я думаю, вам следует проверить библиотеку libconfig http://www.hyperrealm.com/libconfig/ . Для этого должны быть привязки python.
Другое решение - использовать формат json, который уже предоставляется самим python. Найдите в документации по модулю JSON.