2010-03-31 2 views
1

pyGTK에서 계층 적 디렉토리 목록을 생성하려고합니다. 이것은 내가 응용 프로그램을 실행할 때 내가 무엇을 얻을GtkTreeView 위젯에서 디렉토리 계층 구조를 나열하는 방법은 무엇입니까?

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) 

: 내가 제대로 작동 -almost- 함수를 작성했습니다

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

    folderB 
     - b.py 

:

현재,이 다음 디렉토리 트리를 :
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

, this is a FAQ. 알고리즘 정보 : subdirApitersubdirA을 가리키면 다음 반복시 a.pypiter에 도달하면 여전히 subdirA을 가리 킵니다.

말씀하신대로 os.walk을 사용하십시오.

관련 문제