Comment marchez-vous dans les répertoires en utilisant python?

J'ai un dossier appelé notes, naturellement, ils seront classés dans des dossiers, et à l'intérieur de ces dossiers il y aura aussi des sous-dossiers pour les sous-catégories. Maintenant, mon problème est que j'ai une fonction qui marche à travers 3 niveaux de sous-répertoires:

def obtainFiles(path):
      list_of_files = {}
      for element in os.listdir(path):
          # if the element is an html file then..
          if element[-5:] == ".html":
              list_of_files[element] = path + "/" + element
          else: # element is a folder therefore a category
              category = os.path.join(path, element)
              # go through the category dir
              for element_2 in os.listdir(category):
                  dir_level_2 = os.path.join(path,element + "/" + element_2)
                  if element_2[-5:] == ".html":
                      print "- found file: " + element_2
                      # add the file to the list of files
                      list_of_files[element_2] = dir_level_2
                  elif os.path.isdir(element_2):
                      subcategory = dir_level_2
                      # go through the subcategory dir
                      for element_3 in os.listdir(subcategory):
                          subcategory_path = subcategory + "/" + element_3
                        if subcategory_path[-5:] == ".html":
                            print "- found file: " + element_3
                            list_of_files[element_3] = subcategory_path
                        else:
                            for element_4 in os.listdir(subcategory_path):
                                 print "- found file:" + element_4

Note que c'est encore un travail en cours. Son très laid à mes yeux...
Ce que j'essaie de faire ici, c'est d'aller à travers tous les dossiers et sous-dossiers et tous les noms de fichier dans un dictionnaire appelé "list_of_files", le nom de "clé", et le chemin d'accès complet comme "valeur". La fonction ne fonctionne pas encore, mais je me demandais comment utiliser le système d'exploitation.pied de fonction pour faire quelque chose de similaire?

Grâce

source d'informationauteur chutsu