[Python]파일 확장자 필터링
특정 디렉토리에 있는 파일들을 확장자로 필터링하는 예제를 살펴보자.
import os import glob # 방법1 def search_file(path, ext): file_list = os.listdir(path) return list(filter(lambda x: x.endswith(ext), file_list)) png_list = search_file("../source/42-1", "png") print(f'png = {png_list}, Count = {len(png_list)}') py_list = search_file("../source/42-1", "py") print(f'py = {py_list}, Count = {len(py_list)}') # 방법2 def search_file2(path, ext): return glob.glob1(path, "*." + ext) png_list = search_file2("../source/42-1", "png") print(f'png = {png_list}, Count = {len(png_list)}') py_list = search_file2("../source/42-1", "py") print(f'py = {py_list}, Count = {len(py_list)}') ## 결과 png = ['file10.png', 'file11.png', 'file19.png', 'file6.png'], Count = 4 py = ['file12.py', 'file13.py', 'file17.py', 'file3.py', 'file4.py', 'file8.py'], Count = 6 png = ['file10.png', 'file11.png', 'file19.png', 'file6.png'], Count = 4 py = ['file12.py', 'file13.py', 'file17.py', 'file3.py', 'file4.py', 'file8.py'], Count = 6
특정 디렉토리와 그 하위폴더 모든 파일들을 확장자로 필터링하여 가져오는 예제를 살펴보자.
import os import glob # 방법1 def search_file(path, ext): result = [] for _, _, files in os.walk("../source/43-1"): for file in files: file_ext = file.split(".")[-1] if (file_ext == ext): result.append(file) return result txt_list = search_file("../source/43-1", "txt") print(f'txt_list = {txt_list}, Count = {len(txt_list)}') png_list = search_file("../source/43-1", "png") print(f'png_list = {png_list}, Count = {len(png_list)}') print() # # 방법2 def search_file2(path, ext): result = glob.glob(path + "/**/*." + ext, recursive=True) return [x.split("\\")[-1] for x in result] txt_list = search_file2("../source/43-1", "txt") print(f'txt_list = {txt_list}, Count = {len(txt_list)}') png_list = search_file2("../source/43-1", "png") print(f'png_list = {png_list}, Count = {len(png_list)}') ## 결과 txt_list = ['file1.txt', 'file14.txt', 'file15.txt', 'file2.txt', 'file20.txt', 'file5.txt', 'file7.txt', 'file9.txt', 'file1.txt', 'file6.txt', 'file7.txt', 'file8.txt'], Count = 12 png_list = ['file10.png', 'file11.png', 'file19.png', 'file6.png', 'file3.png', 'file7.png', 'file3.png', 'file4.png'], Count = 8 txt_list = ['file1.txt', 'file14.txt', 'file15.txt', 'file2.txt', 'file20.txt', 'file5.txt', 'file7.txt', 'file9.txt', 'file1.txt', 'file6.txt', 'file7.txt', 'file8.txt'], Count = 12 png_list = ['file10.png', 'file11.png', 'file19.png', 'file6.png', 'file3.png', 'file7.png', 'file3.png', 'file4.png'], Count = 8
최신 댓글