파이썬에서만 특정 확장자를 가진 파일을 찾는 방법

Jinku Hu 2023년1월30일
  1. 특정 확장자를 가진 파일을 찾는 glob.glob 방법
  2. 특정 확장자를 가진 파일을 찾기위한 os.listdir()메소드
  3. 특정 확장자를 가진 파일을 찾는 pathlib.glob 메소드
  4. Python 의 디렉토리 및 해당 서브 디렉토리에서 특정 확장자를 가진 파일 찾기
  5. 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')]
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - Python File