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"로 처리해야 되기 때문에 다소 번거로울 수 있다.