Cómo generar una lista de directorios html usando Python

Estoy teniendo algunos problemas al usar Python para generar un documento html. Estoy intentando crear una lista HTML de un árbol de directorios. Esto es lo que tengo hasta ahora:

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 bien si solo hay un directorio raíz, un nivel de subdirectorios y archivos. Sin embargo, agregar otro nivel de subdirectorios causa problemas (porque creo que la etiqueta de cierre no se ingresa suficientes veces al final). Pero me cuesta mucho moverme la cabeza.

Si no se puede hacer de esta manera, ¿hay una manera más fácil de hacerlo? Estoy usando Flask pero no tengo mucha experiencia con las plantillas, así que quizás me esté perdiendo algo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta