Как сгенерировать список каталогов html с помощью Python

У меня возникли некоторые проблемы с использованием Python для создания html-документа. Я пытаюсь создать список HTML дерева каталогов. Вот что у меня есть на данный момент:

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        if level <= 1:
            print('<li>{}<ul>'.format(os.path.basename(root)))
        else:
            print('<li>{}'.format(os.path.basename(root)))
        for f in files:
            last_file = len(files)-1
            if f == files[last_file]:
                print('<li>{}</li></ul>'.format(f))
            elif f == files[0] and level-1 > 0:
                print('<ul><li>{}</li>'.format(f))
            else:
                print('<li>{}</li>'.format(f))
    print('</li></ul>')

Кажется, это работает хорошо, если есть только корневой каталог, один уровень подкаталогов и файлов. Однако добавление еще одного уровня подкаталогов вызывает проблемы (потому что закрывающий тег не вводится достаточное количество раз в конце, я думаю). Но мне трудно уложить это в голове.

Если это невозможно сделать таким образом, есть ли способ сделать это проще? Я использую Flask, но у меня очень мало опыта работы с шаблонами, поэтому, возможно, я что-то упускаю.

17
задан Bo Persson 9 June 2012 в 15:17
поделиться