- glob은 파일 경로 패턴 매칭을 위해 사용하는 파이썬 표준 라이브러리
- shell의 와일드카드 검색과 비슷
glob
import os
import glob
import shutil
os.makedirs("images", exist_ok=True)
for file in glob.glob("*.png"):
shutil.move(file, "images/")
- glob
- 가장 많이 쓰는 핵심 함수
- 패턴에 맞는 파일 경로들을 리스트로 반환
iglob
import glob
files = glob.iglob("*.txt")
print(type(files))
- iglob
- 시작이 빠름
- 대량 데이터 처리에 강함
- 리스트가 아닌 iterator 리턴(generator처럼 동작)
- 파일 수가 많을 때 메모리 절약 가능
- glob은 요소 전체를 한번에 메모리에 올림
- iglob은 현재 처리하는 몇 개의 요소만 메모리에 올림
- lazy evaluation(지연 평가) 방식: 필요할 때만 다음 값을 계산
파라미터
recursive
import os
import glob
import shutil
os.makedirs("data", exist_ok=True)
for file in glob.glob("temp/**/*.txt", recursive=True):
shutil.move(file, "data/")
- recursive
- 하위 폴더까지 순회
- 기본값은 False
**: 모든 하위 디렉토리
root_dir
import os
import glob
import shutil
os.makedirs("data", exist_ok=True)
for file in glob.glob("*.txt", root_dir="temp"):
shutil.move(os.path.join("temp", file), "data/")
- root_dir
- 검색 기준 폴더 지정
- temp폴더안에
*.txt파일 검색
- 검색에 대한 기준이기 때문에 실제 이동시킬때 검색 기준 폴더와 파일을 합친 경로가 필요
include_hidden
import os
import glob
import shutil
os.makedirs("data", exist_ok=True)
for file in glob.glob("*", include_hidden=True):
shutil.move(file, "data/")
- include_hidden
- 숨김 파일/폴더까지 검색
- 주로
.env, .gitignore같은 dotfile 검색 시 유용