2013-09-26 3 views
0

을 기반으로 여러 개의 하위 디렉토리를 포함하는 디렉토리가 있고 각각의 하위 디렉토리는 다중 디렉토리가 있습니다. 모든 하위 디렉토리에있는 파일이 있으며 하위 디렉토리를 기반으로 파일을 선택해야합니다. 일부 입력을받을 수 있습니까? .필터 파일 디렉토리

like <cell 1> <cell 2> <cell 3> 
each cell1 
    <job 1> <job 2> < job 3> 
each job contain sample. txt 

비슷한 cell2와 셀 3 그래서 각 cell/job1 디렉토리에서 sample.txt를 추출하고 싶습니다. 및 다음 프로그램을 작성하십시오. 수정 된 문제 후 프로그램을 수정하십시오. 우리는 더 나은 방법을 수행 할 수

#!/usr/bin/py 
import os 
def find_all(name, path): 
    result = [] 
    for root, dir, files in os.walk(path): 
     print "root %s dir %s" %(root, dir) 
     if "job1" in root: 
      print "\n" 
      if name in files: 
       result.append(os.path.join(root, name)) 
    return result 
name = "sample.txt" 
path = "." 
data = find_all(name, path) 
print data 

~

+0

수입 운영 체제를; 글로브 가져 오기 글로브에서; for glob ("./ cell */job */sample.txt") : os.path.dirname (f) .endswith ("job1") : whatever() – jlujan

답변

1

(os.walk에 의해) 산출 튜플의 두 번째 요소는 디렉토리의 목록이 아닌 디렉토리 이름.

그리고 dirs 대신 root을 확인해야합니다.

시도 다음

def find_all(name, path): 
    result = [] 
    for root, dirs, files in os.walk(path): 
     if os.path.basename(root) == 'job1': 
      if name in files: 
       result.append(os.path.join(root, name)) 
    return result 

glob.glob 사용하는 다른 :

import glob 
import os 

data = glob.glob(os.path.join('cell*', 'job1', 'sample.txt')) 
+0

모든 파일을 반환하지만 찾고 있습니다. 특정 폴더에있는 파일 – user765443

+0

@AbhishekGoswami에 대해 코드를 업데이트했습니다. – falsetru