파일을 다루는 파이썬 프로그램 코딩시, 특정 폴더와 그 하위 폴더에 있는 파일 목록이 필요할 때가 있습니다. glob 모듈의 glob 함수는 제시된 조건에 맞추어 파일명을 구하여 리스트 형식으로 만들어 반환하는 역할을 합니다.

 

이 기능은 대체로 폴더 내의 파일 목록을 얻어서 뭔가를 해야 하거나, 파일 목록을 얻을때 필터를 걸어서 조건에 맞는 목록만 얻을 필요가 있을때 많이 사용됩니다.


테스트해보는 폴더는 아래처럼 images 라는 이름을 가진 폴더이고 3개의 png 파일과 하나의 comment 이름을 가진 하위폴더로 구성되어 있습니다. 

첫번째 예제에서는 검색하고자 하는 폴더의 이름을 지정한 후 와일드카드(*) 를 이용하여 전체 파일 목록을 가져오게끔 했습니다. png 파일 세개와 comment 폴더까지 목록으로 반환되는 것을 볼 수 있습니다. 총 4개의 결과가 리턴됩니다.

 

import glob

# 첫번째 예제
print(glob.glob('images/*'))
# 결과 : ['images\\20200207_181818.jpg', 'images\\20200207_181839.jpg',
          'images\\20200207_181843.jpg', 'images\\comment']

두번째에서는 와일드 카드 뒤에 확장자를 jpg 로 지정하였습니다. 이로써 comment 폴더가 제외되고 총 3개의 결과가 리턴됨을 볼 수 있습니다.

 

import glob

# 두번째 예제
print(glob.glob('images/*.jpg'))
# 결과 : ['images\\20200207_181818.jpg', 'images\\20200207_181839.jpg', 'images\\20200207_181843.jpg']

 

세번째와 네번째에서는 와일드 카드를 두번 (**) 쓰고, recursive 옵션을 True 로 지정함으로써 지정된 폴더와 폴더가 포함하는 파일, 폴더가 포함하는 하위폴더, 그 하위폴더가 포함하는 파일들까지 전체를 모두 출력합니다. 이 예제에서는 총 5개의 파일과 2개의 폴더가 리턴됨을 알 수 있습니다.

 

import glob

# 세번째 예제
print(glob.glob('images/**', recursive=True))
# 결과 : ['images\\', 'images\\20200207_181818.jpg', 'images\\20200207_181839.jpg', 
          'images\\20200207_181843.jpg', 'images\\comment', 'images\\comment\\thailand.txt', 
          'images\\comment\\vietnam.txt']

# 네번째 예제
files = glob.glob('images/**', recursive=True)
for file in files :
    print(file)
    
# 결과 :
# images\
# images\20200207_181818.jpg
# images\20200207_181839.jpg
# images\20200207_181843.jpg
# images\comment
# images\comment\thailand.txt
# images\comment\vietnam.txt

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기