“파이썬 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_hidden
은 False
로 설정되어 있어 숨겨진 파일을 무시합니다. 이를 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