如何在GtkTreeView小部件中列出目录层次结构?

时间:2010-03-31 07:30:36

标签: python pygtk 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)

这是我运行应用程序时得到的结果:
alt text

我还认为我的函数效率低下,我应该使用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 个答案:

答案 0 :(得分:1)

关于效果,this is a FAQ。 关于您的算法:当您将subdirA piter指向subdirA时,当您到达a.py piter时,下一次迭代仍指向subdirA

正如您所说,使用os.walk