файл конфигурации разбора python, содержащий список имен файлов - PullRequest
0 голосов
/ 26 февраля 2011

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

[section1]
path11/file11
path12/file12
...
[section2]
path21/file21
..

Я пробовал ConfigParser, но для него требуются пары имя-значение.Как я могу разобрать такой файл?

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

Вот решение для итератора / генератора:

data = """\
[section1]
path11/file11
path12/file12
...
[section2]
path21/file21
...""".splitlines()

def sections(it):
    nextkey = next(it)
    fin = False
    while not fin:
        key = nextkey
        body = ['']
        try:
            while not body[-1].startswith('['):
                body.append(next(it))
        except StopIteration:
            fin = True
        else:
            nextkey = body.pop(-1)
        yield key, body[1:]

print dict(sections(iter(data)))

# if reading from a file, do: dict(sections(file('filename.dat')))
1 голос
/ 26 февраля 2011

Скорее всего, вам придется реализовать синтаксический анализатор самостоятельно.

Blueprint:

key = None
current = list()
for line in file(...):

   if line.startswith('['):
       if key:
           print key, current
       key = line[1:-1]
       current = list()

   else:
       current.append(line)
...