Python

[Python] 폴더 내 모든 경로의 파일 조회하기

언킴 2025. 8. 19. 13:54
반응형
 

파이썬을 사용하다 보면 경로에 대해 중요시하게 된다. Dataset의 경로 내에 있는 '.csv' 등의 파일을 모두 호출해서 해당 파일을 for 문 형태로 받아오는 일이 생길 수 있다. 이때 주로 사용하는 패키지는 os와 glob가 있다. 

 

os.walk

BASE_DIR = os.path.dirname(__file__) # os.path.dirname(os.getcwd())

def find_file(ext='.csv'):
    """
    확장자가 일치하는 파일을 호출함.
    """
    paths = []
    for (path, _, files) in os.walk(BASE_DIR):
        for filename in files:
            ex = os.path.splitext(filename)[-1]
            if ex == ext:
            	p = os.path.join(path, filename)
                print(p)
                paths.append(p)
    return paths

 

os.walk는 폴더를 순회하면서 전체 폴더 내에 있는 모든 확장자에 대해서 호출하는 형태다. 만약 특정 폴더 내에 있는 csv 파일만 호출하기 위해서는 glob를 사용할 수도 있다. glob는 조금 더 간소화된 패키지라고 보면 된다. __file__이 실행이 안된다면, os.getcwd()로 경로를 설정해서 사용할 수도 있다. 

 

glob

import glob 

BASE_DIR = os.path.dirname(__file__)

glob.glob(os.path.join(BASE_DIR, '*.csv'))

 

glob는 정규표현식에 만족하는 파일을 모두 호출할 수 있다. *.csv를 사용하게 되면, .csv로 끝나는 모든 파일을 호출하게 되고, ? 혹은 + 등을 사용하여 처리할 수 있다. os.walk보다는 효율적이지만 만약 하나 더 깊이 있는 파일을 조회하기 위해서는 "*/*.csv"로 처리해야 되기 때문에 다소 번거로울 수 있다.