os 패키지로만 파일 순회를 하던 나를 반성하며.. 🎃
✔ glob 패키지는 *(아스타리카)를 활용하여, 파일 경로 리스트를 간단히 얻을 수 있습니다.
✔ '*'는 어떤 문자열도 들어올 수 있음을 나타냅니다.
✔ 간단히 recursive=True 변수를 추가하여 모든 하위 디렉토리를 순회할 수도 있죠!
😎 아래는 사용 예시입니다!
from glob import glob
glob('*.jpg')
# workdir의 .jpg로 끝나는 파일명의 전부를 리스트로 반환
glob('**/*.jpg', recursive=True)
# workdir 이하 디렉토리 포함하여 .jpg로 끝나는 파일명의 전부를 리스트로 반환
glob('*/*.txt')
# workdir 1 depth 이하 디렉토리에서 .txt로 끝나는 파일명의 전부를 리스트로 반환
이렇게 아주 간단한 방법으로, 원하는 경로와 포맷의 데이터 리스트를 얻을 수 있습니다.
# workdir 이하에 data/ 라는 dir이 존재한다고 가정
# data/ 이하에는 jpg 파일 존재
from glob import glob
import os
path_list = []
target_path = os.path.join(os.getcwd(), 'data', '*.jpg')
for path in glob.glob(target_path):
path_list.append(path)
다만, 전체 path가 list의 element이기 때문에, 단순 file name을 필요로 하는 경우는,
import os
fname_list = [os.path.basename(path) for path in path_list]
로 사용하면 됩니다.
명료하고 편리한 glob 패키지!
하지만 recursive 옵션은 하위에 너무 많은 데이터가 존재할 경우,
성능 이슈가 발생할 수 있다고 하니, 상황에 맞게 사용하면 됩니다. 😎
✔ https://mingchin.tistory.com/168
✔ https://wikidocs.net/83