09-17 16:42
Notice
Recent Posts
Recent Comments
반응형
관리 메뉴

BAN2ARU

[Python] 하위 폴더 내 특정 확장자 파일을 리스트로 불러오기 & 파일 파일탐색기와 같이 숫자순으로 읽어오기 (glob, natsort) 본문

Language/Python

[Python] 하위 폴더 내 특정 확장자 파일을 리스트로 불러오기 & 파일 파일탐색기와 같이 숫자순으로 읽어오기 (glob, natsort)

밴나루 2022. 5. 27. 19:17

하위 폴더(패턴 O) 내 특정 확장자 파일 불러오기

glob을 활용하면 하위 폴더 내에 있는 특정 확장자 파일을 쉽게 불러올 수 있다.

 

만약, 다음과 같이 폴더가 구성되어 있다고 가정하면,

[dataset folder name = 'test'폴더로 가정]
  |-Case1
    |-1.txt
    |-2.txt
    ...
    |-100.txt
  |-Case2
    |-1.txt
    |-2.txt
    ...
    |-100.txt
  |-Case3
    |-1.txt
    |-2.txt
    ...
    |-100.txt

 

우리는 ./test 내의 하위 폴더 내의 .txt 파일을 불러오고 싶으면 다음과 같이 작성하면 된다.

import glob

file_list = glob.glob('./Test/**/*.txt')

이런 경우에는 Test의 하위 폴더의 '.txt'로 되어있는 파일이름을 가져올 수 있다.

 

하위 폴더(패턴 X) 내 특정 확장자 파일 불러오기

근데, 만약에 Test/Case1/Type1/.../1.txt와 같이 하위폴더가 무수히 많은 경우에서 .txt파일을 얻고 싶다면 glob.glob시에 recursive 옵션을 넣어주면 된다.

import glob

file_list = glob.glob('./Test/**/*.txt', recursive=True)

 

glob.glob으로 불러올 시에 문제점은 파일 탐색기 내에서는

다음과 같은 순서로 구성되어있지만, glob.glob으로 얻은 list의 경우에는

 

하위 폴더 내 특정 확장자 파일리스트를 파일탐색기와 같은 순서로 정렬하기

다음과 같이 순서가 1->100->11->2 순으로 되어 있어서 이를 탐색기와 같은 순서로 불러오고 싶다면 natsort를 이용하면 된다. (1->100->11->2 순으로 불러오는 이유는 문자열로 인식하기 때문임)

import glob
import natsort

file_list = natsort.natsorted(glob.glob('./Test/**/*.txt'))

이런 경우에 file_list는 다음과 같이 제대로 정렬되는 것을 확인할 수 있다.

 

728x90
Comments