2010-08-10 8 views
4

디렉토리 목록 (절대 경로)이 있습니다. 각 디렉토리에는 특정 수의 파일이 있습니다. 이 파일 중 각 디렉토리에서 두 파일을 가져 오려고합니다. 원하는 두 파일은 이름에 문자열 패턴이 있습니다.이 예제에서는 문자열이 'stringA', 'stringB'가됩니다.Python의 디렉토리에서 파일을 가져 오는 방법

그래서 필요한 것은 튜플의 목록입니다. 각 튜플에는 stringA 파일과 stringB 파일이 있어야합니다. 디렉토리 당 하나의 튜플이 있어야합니다. 각 디렉토리는 2 개 이상의 파일을 가질 수 있으며, stringAstringB 파일을 하나만 가질 수 있습니다.

가장 효율적인 방법은 무엇입니까? 어쩌면 목록 생성기를 사용하고 있을까요?

편집 :

예 :

dirs = ['/dir1', '/dir2', '/dir3'] 

result = [('/dir1/stringA.txt', '/dir1/stringB.txt'), ('/dir2/stringA.txt', ...) ...] 

입력이 디렉토리 (디렉토리 목록)이고, 출력 결과 (튜플들의 목록)이어야한다.

import glob 
result = zip(sorted(glob.glob('/dir/*stringA*')), sorted(glob.glob('/dir/*stringB*'))) 

답변

1

은 참조하십시오? 편집 : 실제로 나는 어떻게 작동하지 않습니다. 사전 목록을 반복하는 방법은 무엇입니까?
+0

일을 내 대답은 틀에 너무 – awesomo

+0

'/ 디렉토리는/* stringA *'디렉토리에 대한 작업을 일반화 할 수있는 방법이있다 :이 당신을 위해 작동하는 경우 –

+0

물론 모든 디렉토리로 일반화 할 수있는 방법이 있습니다. '/'+ mydir + '/ * stringA *'와 같이 수동으로 문자열을 구성하면됩니다. 또한 사전에는 반복이 없습니다. glob()는 문자열 목록을 반환하고 zip()은 두 개의 문자열 목록을 (zipper와 같은) 튜플 목록에 "압축"합니다. –

관련 문제