¿Cómo listar la jerarquía de directorios en el widget GtkTreeView?

Estoy tratando de generar un listado de directorio jerárquico en pyGTK.

Actualmente, tengo este siguiente árbol de directorios:

/root folderA - subdirA - subA.py - a.py folderB - b.py 

He escrito una función que, casi, parece funcionar:

 def go(root, piter=None): for filename in os.listdir(root): isdir = os.path.isdir(os.path.join(root, filename)) piter = self.treestore.append(piter, [filename]) if isdir == True: go(os.path.join(root, filename), piter) 

Esto es lo que obtengo cuando ejecuto la aplicación:
texto alternativo

También creo que mi función es ineficiente y que debería estar usando os.walk (), ya que ya existe para tal fin.

¿Cómo puedo, y cuál es la forma adecuada / más eficiente de generar un árbol de directorios con pyGTK?

— editar —- el bloque de código que terminé usando, que funciona, es:

 parents = {} for dir, dirs, files in os.walk(root): for subdir in dirs: parents[os.path.join(dir, subdir)] = self.treestore.append(parents.get(dir, None), [subdir]) for item in files: self.treestore.append(parents.get(dir, None), [item]) 

Sobre el rendimiento, esta es una FAQ . Acerca de su algoritmo: cuando alcanza los puntos de subdirA piter a subdirA , en la siguiente iteración cuando alcanza a.py piter todavía apunta a subdirA .

Como dijiste, usa os.walk .