파이썬을 사용할 때, 특정 폴더 내의 파일 리스트를 가져와야 할 때가 있다.
나같은 경우는 pytorch dataloader를 구성할 때 주로 사용한다.
'/mnt/ssd0/CHC/Project/ICT_Admin/DeepLabV3Plus-Pytorch/datasets/data/traffic/test_data_20210127/다발_서울경인_test_data/다발지역_서울'
위와 같은 경로 아래의 하위 폴더 내의 jpg파일을 리스트로 가지고 오고 싶다고 해보자
하위폴더 리스트의 경우 다음과 같은 명령어로 가져올 수 있다.
glob("./*/")
결과는 아래와 같다.
'./1898/', './6838/', './255/', './8218/', './5145/', './5232/', './6835/', './4150/', './5130/', './6705/', './4116/', './6817/', './5194/', './1906/', './6843/', './4106/', './5020/', './1846/', './341/', './1884/', './9451/', './235/', './6746/', './4064/', './237/', './301/', './1865/', './4146/', './8112/', './8100/', './8111/', './9474/', './8223/', './9464/', './6724/', './5165/', './4137/', './4113/', './5120/', './6800/', './6861/', './357/', './8201/', './6856/', './6762/', './1808/', './8174/', './5199/', './5128/', './8136/', './6798/', './8197/', './9297/', './1832/', './3994/', './9388/', './4013/', './4052/', './5004/', './1829/', './8202/', './4151/', './328/', './6747/', './8115/', './5124/', './9419/', './38/', './2840/', './9381/', './5144/', './8211/', './9431/', './5138/', './4092/', './9391/', './6742/', './8187/', './1844/', './6848/', './6748/', './4134/', './6808/', './5149/', './4085/', './2825/', './36/', './1892/', './9450/', './337/', './5224/', './6819/', './5147/', './302/', './9397/', './321/', './9400/', './5231/', './9374/', './6822/', './5262/', './1886/', './5160/', './4109/', './50/', './1819/', './9437/', './4036/', './6812/', './4129/', './9457/', './8145/', './6613/', './9402/', './6778/', './9445/', './267/', './6851/', './5143/', './5121/', './5220/', './58/', './5169/', './2822/', './6714/', './4007/', './6847/', './4059/', './6745/', './6731/', './9384/', './5247/', './8173/', './4600/', './6792/', './1847/', './6829/', './6719/', './6730/', './6751/', './5198/', './4111/', './8159/', './1895/', './8188/', './9442/', './1890/', './353/', './9385/', './4067/', './295/', './7990/', './4114/', './1894/', './8210/', './5015/', './1863/', './9293/', './5218/', './8206/']
그러면 이 하위폴더 아래의 jpg 파일을 가지고 오고 싶으면 어떻게 하면 될까?
다음과 같이 하면 된다.
glob("./*/*.jpg")
결과는 다음과 같다.
'./1863/gsv_1.jpg', './1863/gsv_2.jpg', './9293/gsv_3.jpg', './9293/gsv_0.jpg', './9293/gsv_1.jpg', './9293/gsv_2.jpg', './5218/gsv_3.jpg', './5218/gsv_0.jpg', './5218/gsv_1.jpg', './5218/gsv_2.jpg', './8206/gsv_3.jpg', './8206/gsv_0.jpg', './8206/gsv_1.jpg', './8206/gsv_2.jpg']
그러면 만약에 각 하위폴더내에 또다른 하위 폴더가 있고, 그 아래에 있는 image파일까지 가지고 오고 싶을때는 어떻게 하면 될까?
다음과 같은 명령어를 사용하면 된다.
glob("./**/*.jpg", recursive=True)
여기서 '**'은 recursive의 의미로서 glob("./*/*.jpg") 명령어를 하위폴더에서 계속해서 반복해서 시행한다고 생각하면 된다. (recursive=True를 넣어야 함)
관련하여 설명이 있는 사이트는 아래와 같다.
[Python] 파이썬으로 폴더와 하위폴더 파일 목록 만들기 glob.glob()
파일을 다루는 파이썬 프로그램 코딩시, 특정 폴더와 그 하위 폴더에 있는 파일 목록이 필요할 때가 있습니다. glob 모듈의 glob 함수는 제시된 조건에 맞추어 파일명을 구하여 리스트 형식으로 만
resumetmachine.tistory.com
Glob 패턴이 뭘까?
서론 타입스크립트의 tsconfig, tslint 설정과 웹팩 설정을 직접 해보면서 이게 도대체 뭘 나타내는 코드일까..?라고 생각하게 만드는 것들이 있었습니다. 그 중에 하나가 바로 글롭 패턴(Glob Pattern)
velog.io
'Python' 카테고리의 다른 글
Namespace와 object, 이와 연결되는 argparse 라이브러리 개념 설명 및 활용 (0) | 2021.09.01 |
---|---|
파이썬 map의 활용 (0) | 2021.08.22 |
isinstance() (0) | 2021.05.24 |
Shell Script , parameter 전달 법 (0) | 2021.05.07 |
쉘스크립트 파일 sh 이용, 파이썬 파일 순차 실행 (0) | 2021.05.07 |