ConfigObj 'un-nest' разделы
Я использую ConfigObj 5.0.6 для хранения многих пользовательских значений, некоторые из которых являются вложенными. Я использую local.ini
заменить типичные значения. Внешнего интерфейса нет, поэтому пользователи редактируют конфиги по мере необходимости. Чтобы сделать это более простым и интуитивно понятным, есть некоторые значения, которые относятся к "корневому" уровню объекта конфигурации, но их легче понять, если они находятся во вложенном разделе local.ini
файл.
Я использую local.ini
заменить значения по умолчанию. Поток приложения предлагает макет конфигурации, который будет иметь вложенные значения ниже вложенных значений.
# un-nested
title = my_title
# nested
[section_1]
val_s1 = val
[section_2]
val_s2 = val
# nested, but I want to be un-nested
val_2 = val
Этот макет, как и положено, ставит val_2
под section_2
:
{
'title': 'my_title',
{'section_1': {'val_s1': 'val'}},
{'section_2': {'val_s2': 'val'},
{'val_2': 'val'}}
}
Можно ли определить val_2
на линии ниже section_2
, но получить доступ к нему в разделе "основной" объекта конфигурации?
Я хотел бы в конечном итоге с объектом конфигурации, как это:
{
'title': 'my_title',
{'section_1': {'val_s1': 'val'}},
{'section_2': {'val_s2': 'val'}},
'val_2': 'val'
}
Конечно, порядок словаря конфигурации не важен; меня интересует возможность использовать вложенные разделы, но изнутри .ini
, выйдите из раздела в родительский.
Я не проверял, но подозреваю, что будет работать вложенность всего, начиная с первой строки и затем нарезка объекта конфигурации. То есть пиши local.ini
такой, что создает:
{
'main_level':
{
'title': 'my_title',
{'section_1': {'val_s1': 'val'}},
{'section_2': {'val_s2': 'val'}},
'val_2': 'val'
}
}
Тогда я мог бы использовать config = config['main_level']
когда я впервые создаю объект конфигурации, но мне интересно, не хватает ли мне простого, правильного способа, который не является хакерским.
1 ответ
Согласно документации, это невозможно:
Во внешнем разделе отдельные значения могут появляться только перед любым подразделом.