[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

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다