Как отобразить иерархию каталогов в виджете GtkTreeView?

Я пытаюсь создать иерархический список каталогов в PyGTK.

В настоящее время у меня есть следующее дерево каталогов:

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

    folderB
        - b.py 

Я написал функцию, которая, кажется, почти работает:

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)

Вот что я получаю, когда запускаю приложение:
альтернативный текст

Я также думаю, что моя функция неэффективна и что я должен использовать os.walk(), так как она уже существует для этой цели.

Как я могу, и как правильно / наиболее эффективный способ создания дерева каталогов с PyGTK?

--- редактировать ---- блок кода, который я использовал, это работает:

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

1 ответ

Решение

По поводу производительности, это FAQ. О вашем алгоритме: когда вы достигнете subdirApiter указывает на subdirAна следующей итерации, когда вы достигнете a.pypiter еще указывает на subdirA,

Как вы сказали, используйте os.walk,

Другие вопросы по тегам