본문 바로가기
Python/Python_basic

recursive 파일 확장자 별 처리 예제

by Mr.DonyStark 2023. 11. 16.

□ import os : os 라이브러리 호출

 ○ os.listdir('경로') : 해당 경로의 디렉토리 검색 및 조회

 ○ os.path.splitext() : 파일명과 파일형식 분리 + 튜플형식임

 ○ 변수.split('.')[1] : .기준으로 스플릿 후 2번째 값 가져옴

 ○ os.walk(): 디렉토리 안의 하위 디렉토리와 파일 목록들을 조회출력(Recursive 재귀적으로 하위폴더 및 하위파일 모두 검색)
 import glob : glob 라이브러리 호출

 ○ glob.glob('경로/**/*.파일확장자', recursive=True)

   * 하위 폴더 및 파일 지정을 위해 /**/*.파일 확장자명을 필히 지정

#예제 : 폴더에 존재하는 파일 및 하위 폴더 전체에서 확장자가 *.txt 및 *png 파일을 분류하시오

#방법1
import os
txt_list1 = []
png_list1 = []

for root, dir_name, file_name in os.walk('C:/Users/User/Downloads/2.QnA-20231115T061510Z-001/2.QnA/source/43-1'):
    for f in file_name:
        ext = f.split('.')[-1]
        if ext == 'txt':
            txt_list1.append(f)
        if ext == 'png':
            png_list1.append(f)
            
print(f'txt 파일 리스트 : {txt_list1}  /  txt 파일개수 : {len(txt_list1)}')
print(f'png 파일 리스트 : {png_list1}  /  py 파일개수 : {len(png_list1)}')

#방법 2
import glob
txt_list2 = glob.glob('C:/Users/User/Downloads/2.QnA-20231115T061510Z-001/2.QnA/source/43-1/**/*.txt', recursive=True)  #하위 조회를 위해 /**/*.확장자입력
png_list2 =  glob.glob('C:/Users/User/Downloads/2.QnA-20231115T061510Z-001/2.QnA/source/43-1/**/*.png', recursive=True)

print(f'png 파일 리스트 : {txt_list2}  /  png 파일개수 : {len(txt_list2)}  \n\npy 파일 리스트 : {png_list2}  /  py 파일개수 : {len(png_list2)}')