메뉴 닫기

파이썬 glob 모듈로 확장자별 파일 일괄 검색하는 방법

파이썬 glob 모듈로 확장자별 파일 일괄 검색하는 방법

📌 반복 작업을 자동화하는 파이썬 파일 검색 꿀팁 공개!

반복적인 파일 정리나 데이터 수집 작업을 하다 보면, 특정 확장자만 골라서 빠르게 처리해야 할 때가 있죠.
그럴 때 파이썬의 glob 모듈은 정말 유용한 도구입니다.
특히 많은 파일 중 원하는 파일만 걸러내야 할 경우, 수작업으로 하나하나 찾는 건 시간 낭비일 뿐만 아니라 실수도 생기기 쉽습니다.
오늘은 그런 문제를 깔끔하게 해결해주는 glob 모듈의 기본 사용법부터 실전 예제까지 친절하게 안내드릴게요.
파이썬 초보자도 이해할 수 있도록 차근차근 알려드리니 끝까지 읽어보시면 분명 도움이 되실 거예요.

이 글에서는 파이썬의 glob 모듈로 파일을 자동 탐색하는 방법을 소개합니다.
폴더 내의 특정 확장자 파일만 선택하는 기본 문법부터, 하위 폴더까지 탐색하는 고급 활용 팁, 그리고 자주 묻는 질문까지 정리했어요.
개발 실무나 데이터 분석을 할 때 파일 처리 자동화를 고민하고 계신 분들에게 꼭 필요한 정보만 담았으니, 지금부터 함께 알아볼까요?



🔗 glob 모듈이란?

파이썬에서 파일 경로나 이름을 검색할 때 가장 유용하게 활용되는 모듈 중 하나가 바로 glob입니다.
glob는 Unix 스타일의 경로 패턴을 사용하여 원하는 파일 목록을 손쉽게 가져올 수 있게 도와줍니다.
예를 들어 폴더 안에 있는 모든 텍스트 파일, 이미지 파일 등 특정 확장자를 가진 파일만 일괄적으로 불러오고 싶을 때 매우 유용하죠.

특히 와일드카드 문자(*)를 사용할 수 있다는 점에서, os.listdir()과 같은 다른 파일 목록 처리 함수보다 훨씬 간편합니다.
glob는 표준 라이브러리 모듈이기 때문에 별도로 설치할 필요 없이 파이썬을 설치하면 바로 사용할 수 있습니다.

  • 📁특정 폴더 내 파일을 리스트로 가져오고 싶을 때
  • 🔎특정 확장자(.txt, .csv 등)만 필터링할 때
  • 🧹불필요한 파일을 자동으로 삭제하거나 이동할 때

💡 TIP: glob 모듈은 단순히 파일 이름을 나열하는 데 그치지 않고, 실시간 데이터 수집이나 자동화 작업에도 많이 쓰입니다.

💬 glob는 기본적으로 문자열 매칭 기능만 제공하므로, 정규표현식이나 복잡한 필터링이 필요한 경우에는 re 모듈이나 pathlib과 함께 사용하면 더 강력한 처리가 가능합니다.

🛠️ glob의 기본 사용법과 예제

glob 모듈을 사용하는 방법은 매우 간단합니다.
우선 모듈을 import하고, glob.glob() 함수를 사용하여 경로 패턴을 지정하면 됩니다.
가장 기본적인 예로, 현재 폴더에 있는 모든 텍스트 파일을 불러오는 코드는 다음과 같습니다.

CODE BLOCK
import glob

# 현재 폴더에 있는 모든 .txt 파일 찾기
txt_files = glob.glob("*.txt")

print(txt_files)

위 코드를 실행하면, 현재 작업 디렉토리에 있는 모든 .txt 파일의 이름이 리스트 형태로 출력됩니다.
예를 들어 ‘note1.txt’, ‘sample.txt’ 등 파일명이 포함된 리스트가 반환되는 식이죠.

또한 glob 모듈은 상대 경로뿐만 아니라 절대 경로도 사용할 수 있고, 와일드카드를 활용해 다양한 형태의 파일 패턴을 지정할 수 있습니다.
예를 들어 ‘data_*.csv’라고 입력하면, ‘data_’로 시작하는 모든 CSV 파일을 검색할 수 있어요.

  • “*.txt”는 모든 텍스트 파일을 의미
  • 📌“data_*.csv”는 data_로 시작하는 모든 csv 파일
  • 🔎“*/logs/*.log”처럼 하위 폴더 패턴도 지정 가능

💎 핵심 포인트:
glob.glob() 함수는 문자열 리스트를 반환하며, 리스트 길이는 검색 조건에 따라 0개에서 수십, 수백 개까지 다양할 수 있습니다.



⚙️ 특정 확장자 파일만 필터링하는 방법

glob 모듈의 가장 강력한 기능 중 하나는 바로 특정 확장자를 가진 파일만 쉽게 필터링할 수 있다는 점입니다.
예를 들어, 수많은 파일 중에서 오직 이미지 파일(.jpg), 텍스트 파일(.txt), 엑셀 파일(.xlsx)만 추출하고 싶을 때 glob 패턴을 이용하면 손쉽게 해결됩니다.

아래 예시는 한 디렉토리 내에서 .csv 파일만 가져오는 코드입니다.

CODE BLOCK
import glob

# .csv 확장자를 가진 모든 파일 찾기
csv_files = glob.glob("*.csv")

print(csv_files)

만약 특정 접두어 또는 접미어가 있는 파일을 찾고 싶다면, 와일드카드(*)와 조합해서 더욱 세밀한 검색이 가능합니다.

  • 📄“report_*.xlsx” : ‘report_’로 시작하는 엑셀 파일
  • 🖼️“*.png” : 모든 PNG 이미지
  • 📝“*_log.txt” : ‘_log’로 끝나는 텍스트 파일

💡 TIP: 확장자가 대소문자 혼용된 경우에는 fnmatch 모듈을 함께 사용하거나, 파일명을 소문자로 바꿔 처리하는 방식도 고려해보세요.

🔌 하위 폴더까지 검색하는 방법

기본적으로 glob.glob() 함수는 지정한 폴더 내에서만 파일을 검색합니다.
하지만 프로젝트 구조가 깊거나, 여러 서브폴더에 파일이 분산되어 있는 경우 하위 디렉토리까지 모두 검색해야 할 때가 있죠.
이럴 때는 재귀 검색 패턴(**)을 활용하면 손쉽게 해결할 수 있습니다.

파이썬 3.5 이상부터는 glob.glob()recursive=True 옵션을 사용하면 ‘**’ 패턴을 인식할 수 있습니다.

CODE BLOCK
import glob

# 모든 하위 폴더 포함하여 .py 파일 검색
python_files = glob.glob("**/*.py", recursive=True)

print(python_files)

위 예제는 현재 디렉토리와 그 아래 모든 하위 디렉토리까지 탐색하여, 확장자가 ‘.py’인 파일을 모두 리스트로 반환합니다.
특히 크롤링이나 대용량 데이터 정리 작업을 할 때 매우 유용하게 활용됩니다.

  • 📂“**/*.txt” : 하위 폴더 포함 모든 텍스트 파일
  • 🔁recursive=True 옵션 꼭 필요
  • 🚫재귀 검색 시 성능 저하 주의 (파일 수가 많은 경우)

💡 TIP: 대규모 프로젝트에서는 불필요한 폴더까지 검색하지 않도록, 패턴을 구체적으로 작성해주는 것이 좋습니다. 예: “src/**/*.csv”



💡 glob 사용 시 주의할 점

glob 모듈은 매우 직관적이고 편리하지만, 몇 가지 주의할 점도 함께 알아두는 것이 좋습니다.
단순한 패턴 매칭을 기반으로 하기 때문에 예상치 못한 결과가 나오거나, 시스템 리소스를 과도하게 사용하는 상황이 발생할 수 있기 때문입니다.

특히 재귀 검색을 수행할 때는 검색 범위가 넓어지는 만큼 파일 수가 많아지면 성능 저하가 발생할 수 있으며, 파일 경로가 너무 길거나 특수 문자 등이 포함된 경우에는 오류가 날 수도 있습니다.

  • ⚠️파일 수가 많을 경우 메모리 과다 사용 가능
  • 🔎패턴 누락 시 원하는 파일이 검색되지 않을 수 있음
  • 🚫정규표현식은 지원하지 않음 (fnmatch 또는 re 모듈 사용 필요)

⚠️ 주의: 너무 광범위한 패턴 사용은 불필요한 결과를 불러와 로직의 정확도에 영향을 줄 수 있습니다. 예: “**/*.*”

이러한 점들을 고려하여 glob을 사용할 때는 항상 패턴을 구체적으로 작성하고, 필요한 경우 다른 모듈과 병행 사용하는 것이 더 안정적이고 효율적인 코드 작성으로 이어질 수 있습니다.

자주 묻는 질문 (FAQ)

glob과 os.listdir()의 차이점은 무엇인가요?
glob은 와일드카드로 패턴 검색이 가능하고, 특정 확장자 필터링이 편리한 반면 os.listdir()은 단순히 파일 목록만 가져오므로 추가 필터링 작업이 필요합니다.
glob로 숨김 파일도 검색되나요?
기본적으로 glob은 숨김 파일을 포함하지 않습니다. 숨김 파일도 검색하려면 “.\*” 형태로 명시적으로 패턴을 지정해야 합니다.
glob는 대소문자를 구분하나요?
운영체제에 따라 다르지만 일반적으로 대소문자를 구분합니다. Windows는 구분하지 않지만 Linux/Unix는 대소문자를 구분하므로 주의해야 합니다.
glob.glob 대신 glob.iglob을 써도 되나요?
가능합니다. glob.iglob은 이터레이터를 반환하므로 메모리 사용을 줄일 수 있어, 처리할 파일 수가 많을 때 유리합니다.
특정 디렉토리만 검색 대상에서 제외할 수 있나요?
glob 자체로는 제외 디렉토리를 지정할 수 없습니다. 이 경우 os.walk와 조건문을 함께 사용해야 합니다.
재귀 검색을 안 할 때도 recursive=True를 써야 하나요?
아닙니다. ‘**’ 패턴을 사용하지 않는다면 recursive=True를 굳이 지정할 필요는 없습니다.
glob로 파일 수정 시간순 정렬이 가능한가요?
glob은 단순히 파일 경로만 반환하므로, os.path.getmtime() 등을 활용하여 별도로 정렬해야 합니다.
glob은 어떤 경우에 사용을 피해야 하나요?
매우 큰 디렉토리 구조에서 모든 파일을 재귀 탐색해야 할 경우 성능 이슈가 발생할 수 있으므로, 이럴 땐 os.walk나 pathlib을 함께 고려하는 것이 좋습니다.

📌 파이썬 glob으로 반복 작업을 자동화하세요

파이썬의 glob 모듈은 파일 검색을 손쉽게 자동화할 수 있는 강력한 도구입니다.
특정 확장자를 가진 파일만 골라내거나, 하위 폴더까지 재귀적으로 탐색하는 작업을 단 몇 줄의 코드로 해결할 수 있죠.
특히 glob은 단순한 파일 정리뿐 아니라, 대규모 데이터 분석, 로그 수집, 자동화 배치 스크립트 등 다양한 분야에서 널리 활용됩니다.

이번 글에서는 glob의 기본 구조부터 자주 사용하는 패턴, 고급 활용법과 주의점까지 실제 활용에 필요한 내용을 중심으로 정리해보았습니다.
지금까지 소개한 내용을 참고하셔서 반복적인 파일 처리 작업을 더욱 효율적으로 만들어보세요.
단순한 작업도 자동화하면 시간과 에너지를 아낄 수 있고, 실수도 줄어들게 됩니다.
이제 여러분도 glob으로 파일 검색의 고수가 되어보세요!


🏷️ 관련 태그 : 파이썬파일처리, glob모듈, 확장자필터, 자동화스크립트, 파이썬기초, 파일검색, 텍스트파일탐색, 데이터수집, 파이썬팁, 반복작업자동화