мета-данные страницы
  •  

Это старая версия документа!


Ресурсы

Разделы

Работа с файлом конфигурации

Конструктор объекта ConfigFile принимает путь к файлу конфигурации. Путь задаётся строкой и может быть относительным.

conf_file = ConfigFile('/etc/application.conf')

Далее объект ConfigFileContent можно получить либо вызвав метод get(), либо, что более предпочтительно, воспользовавшись менеджером контекста:

with ConfigFile(config_file) as root_section:
  port = root_section.get_value('port', int, 8080)

Особенно хорошо и лаконично получается при использовании хранилища конфигураций:

with ConfigFile('/etc/application.conf') as root_section:
    add_config(NetConfig, NetConfig(
        port=root_section.get_value('port', int, 8080),
        baseurl=root_section.get_value('baseurl', str)
    ))

Для работы с разделами и подразделами конфигурации можно получать доступ к вложенным словарям:

with ConfigFile('/etc/application.conf') as root_section:
    with root_sectin.get_section('net') as net_section:
        add_config(NetConfig, NetConfig(
            port=net_section.get_value('port', int, 8080),
            baseurl=net_section.get_value('baseurl', str)
        ))

Вложенность не ограничивается.

Для работы с списками секций, когда формат конфигурации следующий:

[[net]]
name = "a"
ip = "192.168.0.0/24"

[[net]]
name = "b"
ip = "192.168.1.0/24"

Используется метод get_list_section()

with ConfigFile('/etc/application.conf') as root_section:
    with root_sectin.get_list_section('net') as net_section:
        conf_ar = []
        for net_el in net_section:
            conf_ar.append(NetConfig(
                name=net_el.get_value('name'),
                ip=net_el.get_value('ip')
            ))
 
        add_config(NetConfig, conf_ar)

Иной работы объекты класса ConfigFile не делают.

Работа с параметрами конфигурации

Как известно, файлы конфигурации в формате toml легко можно представить в виде словаря Python (либо JSON-объекта). Для работы с одним уровнем данного словаря и создан класс ConfigFileContent. Он даёт API работы с параметрами на данном текущем уровне.