1

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

1 に答える 1

1

性能についてのFAQです。アルゴリズムについて: に到達すると、次の反復で に到達してもまだ に到達しsubdirA piterます。subdirAa.py pitersubdirA

あなたが言ったように、を使用してos.walkください。

于 2010-03-31T09:36:58.910 に答える