파이썬에서만 특정 확장자를 가진 파일을 찾는 방법
-
특정 확장자를 가진 파일을 찾는
glob.glob
방법 -
특정 확장자를 가진 파일을 찾기위한
os.listdir()
메소드 -
특정 확장자를 가진 파일을 찾는
pathlib.glob
메소드 - Python 의 디렉토리 및 해당 서브 디렉토리에서 특정 확장자를 가진 파일 찾기
-
pathlib
모듈 검색 파일을 재귀 적으로
이 기사에서는 파이썬에서만 특정 확장자를 가진 파일을 찾는 다양한 방법을 소개합니다.
특정 확장자를 가진 파일을 찾는 glob.glob
방법
glob.glob
모듈을 사용하여 파이썬에서만 특정 확장자를 가진 파일을 찾을 수 있습니다.
import glob
targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)
위의 코드는 C:\Test
디렉토리에서 확장자가 txt
인 파일을 찾는 방법을 보여줍니다.
특정 확장자를 가진 파일을 찾기위한 os.listdir()
메소드
os.listdir()
함수는 파일 경로 정보없이 지정된 디렉토리의 모든 파일을 나열합니다. str.endswith()
함수를 사용하여 특정 확장자를 가진 파일을 추출 할 수 있습니다.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']
os.path.join()
함수를 사용하여 전체 경로를 구성해야합니다.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']
특정 확장자를 가진 파일을 찾는 pathlib.glob
메소드
pathlib
모듈은 객체 지향 파일 시스템 경로를 제공하는 Python 3.4에 도입되었습니다. Windows OS 의 Windows 경로와 Unix 와 유사한 시스템의 POSIX 경로의 두 가지 스타일을 제공합니다.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]
결과는 WindowsPath
로 표시되며 다음과 같이 str()
를 추가하여 결과를 문자열 표현으로 변환 할 수 있습니다.
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Python 의 디렉토리 및 해당 서브 디렉토리에서 특정 확장자를 가진 파일 찾기
C:\Test\*.txt
패턴은 C:\Test
디렉토리의 txt
파일 만 검색하지만 서브 디렉토리는 검색하지 않습니다. 서브 디렉토리에 txt
파일을 가져 오려면 패턴을 약간 수정하면됩니다.
import glob
targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)
Test
와\*.txt
사이의 와일드 카드**
는 디렉토리와 서브 디렉토리에서 txt
파일을 찾아야 함을 의미합니다.
pathlib
모듈 검색 파일을 재귀 적으로
glob.glob
에**
를 추가하여 파일을 재귀 적으로 검색하는 것과 유사하게 pathlib.Path.glob
메소드에**
를 추가하여 특정 확장자를 가진 파일을 재귀 적으로 찾을 수도 있습니다.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook