2013-05-10 4 views
0

이것은 다른 곳에서도 설명되었지만 완전한 의미를 가진 것은 무엇인지 찾을 수 없었습니다.파이썬에서 다중 튜플

파이썬에서 os.walk() 함수를 사용하려고합니다.이 함수는 3- 튜플을 반환합니다. 이제 os.walk()에서 x, y, z에 대해 올바르게 사용하는 방법을 이해했지만 3-tuple의 내부 구조는 여전히 혼란 스럽습니다. 이 점을 이해하는 데 전적으로 필요하지 않을 수도 있지만 제 자신의 정신으로 나를 유머러스하게하십시오.

os.walk의 설명서에 따르면 3- 튜플 응답은 (rootdirname, 하위 디렉토리 목록, 파일 목록) 형식입니다. 그러나 이는 하위 디렉토리가 아닌 단일 디렉토리의 데이터만을 설명합니다.

내 질문입니다, 전체 오브젝트의 형태가 실제로 인 경우 A) 3 항목의 튜플 (ROOT1, subdirs1, files1), (ROOT2, subdirs2, files2)의 목록, ...

또는

B) 세 개의 별개 목록 ((root1, root2), (subdirs1, subdirs2), (files1, files2))의 터플, 튜플 매직, 모든 1이 함께 연결되어 있고 모두 의 2는 함께 연관되어있다. 도움을

감사

편집 : 발전기 개체에 대한 팁을위한 피터 DeGlopper에 감사합니다.

원래 질문은 os.walk()이 3 튜플의 목록을 반환했지만 원래 루프의 각 반복마다 단일 3 튜플을 동적으로 생성한다는 가정하에 원래의 질문이 생성되었습니다.

+0

전자는 다음과 같습니다. – katrielalex

+0

특히, 3 차원 튜플이 평가 될 때 생성되는 생성자입니다 (목록이 아님). –

+0

아, 나는 발전기에 대해 몰랐다. 이제는 의미가 있습니다. 감사 – toppy42

답변

0

걸어 다니는 각 디렉터리에 대해 해당 디렉터리의 경로, 해당 디렉터리의 파일 및 해당 디렉터리의 디렉터리가 하나씩 있습니다. 후자의 두 가지는 순서 (목록이지만 중요하지 않습니다.)입니다. 다음과 같이 사용하십시오.

for root, files, dirs in os.walk("/path/"): 
    for filepath in files: 
     filepath = os.path.join(root, filepath) 
     # process file 
    for dirpath in dirs: 
     dirpath = os.path.join(root, dirpath) 
     # process dir 
관련 문제