본문 바로가기
프로그래밍/Python

파이썬(Python) fnmatch를 이용한 폴더와 파일 탐색

by 부자 꽁냥이 2023. 4. 24.

파이썬(Python)의 내장 모듈인 fnmatch은 파일명 또는 폴더명이 특정 패턴과 일치하는지 여부를 알려주는 모듈로써 fnmatch 단독으로 사용되진 않고 os.listdir 함수와 같이 사용한다. 이번 포스팅에서는 fnmatch을 이용하여 특정 패턴과 일치하는 파일과 폴더를 찾는 방법에 대해서 알아본다.


   fnmatch 사용법

여기서는 많이 사용되는 조건을 바탕으로 fnmatch 사용법을 알아본다.


1) 특정 문자열 포함 여부

a. 특정 문자로 시작하는 폴더 및 파일 찾기 : 특정 문자+' * '

아래 코드는 test_folder 내 test로 시작하는 파일명 및 폴더를 출력한다.

## test_folder 내 test로 시작하는 파일과 폴더
target_folder = 'test_folder'
for f in os.listdir(target_folder):
    if fnmatch.fnmatch(f, 'test*'):
        print(f)

 

 

b. 특정 문자로 끝나는 폴더 및 파일 찾기 : ' * ' + 특정 문자

아래 코드는 test_folder 내에서 test로 끝나는 텍스트 파일을 출력한다. 뒤에 확장자 '.txt'를 뺀다면 test로 끝나는 폴더를 찾을 수도 있다.

 

## test_folder 내 test로 끝나는 텍스트 파일
target_folder = 'test_folder'
for f in os.listdir(target_folder):
    if fnmatch.fnmatch(f, '*test.txt'):
        print(f)

 

 

c. 특정 문자를 포함하는 폴더 및 파일 찾기 : ' * ' + 특정 문자 + ' * '

특정 문자 좌우에 와일드카드 '*'를 붙여주면 특정 문자를 포함하는 폴더와 파일을 찾을 수 있다. 아래 코드는 test_folder 내 test를 포함하는 파일과 폴더를 찾는다.

 

## test_folder 내 test를 포함하는 폴더와 파일
target_folder = 'test_folder'
for f in os.listdir(target_folder):
    if fnmatch.fnmatch(f, '*test*'):
        print(f)

 


2) 문자 개수로 찾기

a. 문자 개수 : ?x(개수)

와일드카드 '?'를 원하는 개수만큼 넣어주면 해당 개수로 이루어진 폴더와 파일(.확장자 포함)을 찾을 수 있다. 아래 코드는 test_folder 내 4글자(한글, 알파벳, 숫자 포함)로 이루어진 폴더와 파일을 출력한다.

 

## test_folder 내 4글자로 이루어진 폴더와 파일(확장자 포함)
target_folder = 'test_folder'
for f in os.listdir(target_folder):
    if fnmatch.fnmatch(f, '????'):
        print(f)

 

 

b. 알파벳, 한글, 숫자 개수만 고려하기

'[a-z]'는 알파벳, '[ㄱ-힣]'은 한글, '[0-9]'는 숫자를 의미하며 이를 원하는 개수와 조합으로 문자열을 구성하면 해당 조합과 개수로 이루어진 폴더와 파일을 찾을 수 있다.

 

## test_folder 내 한글 2개_알파벳 4개_숫자 2개로 이루어진 텍스트파일 출력
target_folder = 'test_folder'
for f in os.listdir(target_folder):
    if fnmatch.fnmatch(f, '[ㄱ-힣][ㄱ-힣]_[a-z][a-z][a-z][a-z]_[0-9][0-9].txt'):
        print(f)

 


댓글


맨 위로