2013-02-08 2 views
2

디렉토리에서 특정 확장자로 끝나는 모든 파일을 검색하기 위해 처리 할 표준 방법은 무엇입니까? ".ext 또는 .ext2으로 끝나는 모든 파일은 대소 문자를 구분하지 않습니까?"파이썬에서 특정 확장자로 끝나는 파일 이름을 일치시키는 간결한 방법은 무엇입니까?

import re 
files = os.listdir(mydir) 
# match in case-insensitive way all files that end in '.ext' or '.ext2' 
p = re.compile(".ext(2)?$", re.IGNORECASE) 
matching_files = [os.path.join(mydir, f) for f in files if p.search(x) is not None] 

더 간결 glob 또는 fnmatch이 할 수있는 선호하는 방법이 있나요 : 한 가지 방법은 os.listdirre 모듈을 사용하여입니까? listdir의 성가신 점은 os.path.join 디렉토리를 반환하여 각 파일의 기본 이름에 디렉토리를 추가하여 항상 경로를 처리해야한다는 것입니다.

답변

3

방법에 대해 :

>>> import glob 
>>> glob.glob("testdir/*") 
['testdir/a.txt', 'testdir/b.txt', 'testdir/d.ext', 'testdir/c.ExT2'] 
>>> [f for f in glob.glob("testdir/*") if f.lower().endswith((".ext", ".ext2"))] 
['testdir/d.ext', 'testdir/c.ExT2']