Чтение файла конфигурации в Python (хранение / чтение вложенных данных с помощью ConfigParser) - PullRequest
4 голосов
/ 15 февраля 2012

Я пишу сценарий обработки списка, который должен прочитать данные конфигурации для каждого элемента в списке. Данные конфигурации лучше всего представить в виде вложенного дерева.

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

Я очень быстро просмотрел документацию configParser , но мне не удалось выяснить, может ли он работать с вложенными данными.

Мои данные конфигурации будут иметь следующую структуру:

<markers>
    <marker>
        <date></date>
        <value></value>
    </marker>
</markers>
<items>
    <item>
        <start></start>
        <end></end>
        <mcc>
           <chg>
                <date></date>
                <ival></ival>
                <fval></fval>
           </chg>
        </mcc>
    </item>
</items>

Могу ли я использовать ConfigParser для чтения / (записи?) Такого рода вложенных данных в файле конфигурации? (Меня больше интересует возможность читать, чем писать файл конфигурации. Я не против написать файл конфигурации вручную при необходимости).

Ответы [ 2 ]

7 голосов
/ 15 февраля 2012

Нет, configparser не поддерживает вложение. Вместо этого вы можете посмотреть configObj . Это зрелый и довольно широко используемый.

2 голосов
/ 15 февраля 2012

В соответствии с вашими данными XML вам нужен раздел и подраздел. Таким образом, вы можете использовать ConfigParser, но вы должны указать подраздел с таким значением, как

[markers]
[markers.marker]
date=''
value=''

[items]
[items.item]
start=''
end=''
[items.item.mcc]
[items.item.mcc.chg]
date=''
ival=''
fval=''

Затем необходимо переопределить функцию getsection, чтобы получить вложенные данные.

...