2014-10-15 2 views
0

내 파이썬 스크립트가 "/ main"폴더에 있다고합니다. 메인에 하위 폴더 안에 여러 개의 텍스트 파일이 있습니다. 난 그냥 아닌 하위 디렉토리의에 이름을 지정하여 파일을 열 수 있어야합니다.서브 디렉토리 python을 지정하지 않고 파일 열기

그래서 open_file 전체 경로가/인 경우에도 ('test1.csv')가 test1.csv 열립니다 주/테스트/test1.csv. 중복 된 파일 이름이 없으므로 문제가되지 않습니다.

나는 창문을 사용하고있다. 당신은 매우 깊은 폴더 구조가있는 경우

+0

앞에/test를 추가하고 파일을 열고 그 값을 반환하는 메서드를 만들 수 있습니다. –

+0

@VincentBeltman, 많은 하위 디렉토리가 있습니다. 나는 그것들 모두를 들여다보고 싶다. – user1830663

+0

그러면 성능에 영향을 미치지 않을 방법을 생각할 수 없습니다. –

답변

1
import os 

def get_file_path(file): 
    for (root, dirs, files) in os.walk('.'): 
     if file in files: 
      return os.path.join(root, file) 

이렇게하면됩니다. 경로를 반환하므로 코드에서 파일 열기를 처리해야합니다.

1
import os 
def open_file(filename): 
    f = open(os.path.join('/path/to/main/', filename)) 
    return f 
2

당신은 당신이 검색의 깊이를 제한 할 수있는 하위 폴더 구조

import os 

def find_and_open(filename): 
    for root_f, folders, files in os.walk('.'): 
     if filename in files: 
      # here you can either open the file 
      # or just return the full path and process file 
      # somewhere else 
      with open(root_f + '/' + filename) as f: 
       f.read() 
       # do something 

에 파일 이름을 찾을 os.walk 사용할 수

관련 문제