파이썬 glob 라이브러리 : 파일 및 디렉토리 다루기 2

파이썬 glob” 라이브러리는 os 라이브러리의 기능과 마찬가지로 파일과 디렉토리를 검색하는 데 사용할 수 있습니다.

os 라이브러리와 다른점파일 경로 패턴 매칭을 이용하여 지정된 패턴에 맞는 파일이나 디렉토리를 검색하는 데 사용된다는 점입니다.

glob은 와일드카드 문자(*)를 사용하여 경로를 패턴화하고, 해당 패턴에 맞는 파일 목록을 반환할 수 있습니다.

파이썬 glob 기본 사용법

glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)

pathname 인자에 path를 패턴화 해서 입력하면 됩니다.

./는 현재 python 파일이 위치한 경로를 의미합니다.

*은 “모든 문자가 일치한다” 라는 의미를 가지고 있습니다.

**은 “디렉토리와 그 하위 디렉토리를 모두 포함하여 일치시킨다” 라는 의미를 가지고 있습니다

./tmp/*은 ‘tmp’ 라는 폴더 내 모든 파일들을 의미합니다.

하위 파일 확인하기

import glob

# 현재 디렉토리와 하위 디렉토리의 모든 파일 목록 얻기
all_files = glob.glob("**/*", recursive=True)

print("전체 파일 목록:")
for file in all_files:
    print(file)

특정 확장자만 확인

import glob

# 현재 디렉토리의 모든 텍스트 파일 목록 얻기
text_files = glob.glob("*.txt")

print("텍스트 파일 목록:")
for file in text_files:
    print(file)

특정 패턴과 일치하는 파일, 디렉토리 확인

import glob

# 현재 디렉토리에서 'file'이라는 단어를 포함하는 파일 목록 얻기
matched_files = glob.glob("*file*")

print("일치하는 파일 목록:")
for file in matched_files:
    print(file)

특정 디렉토리의 모든 하위 파일 확인

import glob

# 특정 디렉토리의 모든 하위 파일 목록 얻기
subdirectory_files = glob.glob("/path/to/directory/**/*", recursive=True)

print("특정 디렉토리의 하위 파일 목록:")
for file in subdirectory_files:
    print(file)

숨겨진 파일도 가져오기

include_hiddenFalse로 설정되어 있어 숨겨진 파일을 무시합니다. 이를 True로 설정하면 숨겨진 파일도 포함하여 검색할 수 있습니다.

import glob

# include_hidden 매개변수를 True로 설정하여 숨겨진 파일을 포함하여 검색
hidden_files = glob.glob('/path/to/files/.*', include_hidden=True)

# 결과 출력
print(hidden_files)

include_hidden=True로 설정하여 숨겨진 파일을 포함하여 결과를 가져옵니다. 결과는 리스트 형태로 반환되며, 숨겨진 파일이 포함됩니다.

glob.iglob() : 대량의 파일 목록 가져오기

glob.iglob 함수는 glob.glob과 유사하지만, 제너레이터(generator)를 반환하여 이터레이션 중에 파일을 하나씩 가져올 수 있습니다.

따라서 대량의 파일을 처리할 때 메모리를 효율적으로 사용할 수 있습니다.

import glob

for file_path in glob.iglob('/path/to/files/*.txt'):
    print(file_path)

glob.escape() : 특수문자 처리

이 함수를 사용하면 파일 경로를 동적으로 구성할 때 특수 문자를 포함한 문자열을 안전하게 처리할 수 있습니다.

import glob

special_characters = '[file]*.txt'
safe_path = glob.escape(special_characters)

for file_path in glob.glob(f'/path/to/files/{safe_path}'):
    print(file_path)

이렇게 사용하면 special_characters에 포함된 메타문자가 문자 그대로 해석되어 경로를 안전하게 구성할 수 있습니다.

참고하면 좋은 글

파이썬 OS 라이브러리 : 파일 및 디렉토리 다루기 1

glob — Unix style pathname pattern expansion — Python 3.12.2 documentation

Leave a Comment

목차