Como gerar uma lista de diretórios html usando Python

Estou tendo alguns problemas usando o Python para gerar um documento html. Eu estou tentando criar uma lista de HTML de uma árvore de diretório. Isto é o que eu tenho até agora:

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>')

Parece funcionar bem se houver apenas o diretório raiz, um nível de subdiretórios e arquivos. No entanto, adicionar outro nível de subdiretórios faz com que haja problemas (porque a tag de fechamento não é entrada o suficiente no final, acho). Mas estou tendo dificuldade em entender isso.

Se não puder ser feito dessa maneira, existe uma maneira mais fácil de fazer isso? Eu estou usando o Flask, mas eu sou muito inexperiente com modelos, então talvez eu esteja perdendo alguma coisa.

questionAnswers(1)

yourAnswerToTheQuestion