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