Skip to content

Python 디렉토리 내 모든 파일 가져오기: 디렉토리 목록 작업 효율성 향상

Updated on

다재다능하고 강력한 프로그래밍 언어인 Python은 파일 및 디렉토리 관리를 포함한 다양한 작업에 널리 사용됩니다. Python 개발자가 자주 마주치는 일반적인 작업 중 하나는 디렉토리 내 모든 파일을 나열해야하는 경우입니다. 이 문서에서는 Python을 사용하여 디렉토리 내 모든 파일을 가져오는 과정을 안내하며 os.listdir 함수와 사용 방법에 중점을 둡니다.

os.listdir 함수는 Python의 os 모듈의 일부로, 운영 체제 종속 기능을 사용하는 휴대용 방법을 제공합니다. 이 함수를 사용하면 지정된 디렉토리의 모든 파일과 디렉토리를 나열할 수 있습니다. 하지만 파일을 나열하는 것만이 아닙니다. 결과를 필터링하는 방법, 디렉토리를 재귀적으로 나열하는 방법, JSON 및 CSV와 같은 다른 파일 유형과 작업하는 방법에 대해서도 알아보겠습니다.

Python Pandas 데이터프레임에서 코딩 없이 빠르게 데이터 시각화를 생성하고 싶으신가요?

PyGWalker는 시각화와 함께 탐색적 데이터 분석을 위한 Python 라이브러리입니다. PyGWalker (opens in a new tab)는 pandas 데이터프레임과 polars 데이터프레임을 Tableau 스타일의 사용자 인터페이스로 변환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 작업을 간소화할 수 있습니다.

데이터 시각화를 위한 PyGWalker (opens in a new tab)

1. os.listdir를 사용하여 디렉토리 내 모든 파일 가져오기

os.listdir 함수는 Python의 강력한 도구 중 하나입니다. 이 함수는 경로로 지정된 디렉토리의 항목 이름을 포함하는 목록을 반환합니다. os.listdir의 사용 방법을 보여주는 기본적인 예제는 다음과 같습니다:

import os
 
def list_files(directory):
    return os.listdir(directory)
 
print(list_files('/경로/디렉토리/'))

이 코드는 지정된 디렉토리의 모든 파일과 디렉토리 목록을 출력합니다. 그러나 os.listdir는 재귀적으로 파일을 나열하지 않으므로 즉, 주어진 디렉토리의 하위 디렉토리 파일을 나열하지 않습니다. 다음 세그먼트에서 재귀적으로 파일을 나열하는 방법을 다루겠습니다.

2. 재귀적으로 파일과 디렉토리 나열하기

파일과 디렉토리를 재귀적으로 나열하려면 즉, 모든 하위 디렉토리의 파일을 포함하려면 os.walk 함수를 사용할 수 있습니다. os.walk 함수는 디렉토리 트리를 상향 또는 하향으로 탐색하면서 디렉토리 트리에서 파일 이름을 생성합니다.

다음은 디렉토리와 하위 디렉토리의 모든 파일을 나열하는 방법입니다:

import os
 
def list_files_recursively(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            print(os.path.join(root, file))
 
list_files_recursively('/경로/디렉토리/')

이 코드는 지정된 디렉토리의 모든 파일 경로를 출력합니다. os.path.join(root, file) 부분은 파일의 전체 경로를 가져오는 데 사용됩니다.

3. 파일 확장자로 파일 필터링하기

일부 경우에는 특정 유형의 파일, 즉 특정 확장자가 있는 파일만 나열하고 싶을 수 있습니다. 예를 들어, JSON 파일 또는 CSV 파일만 나열하려는 경우입니다. 이를 위해 파일 목록 코드에 간단한 조건을 추가할 수 있습니다:

import os
 
def list_files_by_extension(directory, extension):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extension):
                print(os.path.join(root, file))
 
list_files_by_extension('/경로/디렉토리/', '.json')

이 코드는 지정된 디렉토리 및 하위 디렉토리의 모든 JSON 파일 경로를 출력합니다. 이 코드를 수정하여 파일의 확장자에 따라 '.csv' 같은 다른 확장자로 파일을 나열할 수도 있습니다.

다음 부분에서는 이미지와 같은 특정 유형의 파일을 나열하는 방법에 대해 논의할 것입니다.

4. 특정 유형의 파일 나열하기: 이미지와 동영상

자주 필요한 작업 중 하나는 디렉토리에서 이미지 또는 동영상과 같은 특정 유형의 파일을 나열하는 것입니다. 파일 확장자를 확인하여 이 작업을 간단하게 수행할 수 있습니다. 다음은 디렉토리 안의 모든 이미지 파일을 나열하는 방법입니다:

import os
 
def list_image_files(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(('.jpg', '.png', '.jpeg')):
                print(os.path.join(root, file))
 
list_image_files('/경로/디렉토리/')

이 코드는 지정된 디렉토리와 하위 디렉토리의 모든 이미지 파일(JPEG 및 PNG) 경로를 출력합니다. 이 코드를 수정하여 '.mp4' 또는 '.avi' 같은 다른 확장자로 동영상 파일도 나열할 수 있습니다.

동일한 접근 방식으로 비디오에 대해서도 확장자를 사용하여 동일한 작업을 수행할 수 있습니다:

import os
 
def list_video_files(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(('.mp4', '.avi', '.mov')):
                print(os.path.join(root, file))
 
list_video_files('/경로/디렉토리/')

이 코드는 지정된 디렉토리와 하위 디렉토리의 모든 비디오 파일(MP4, AVI 및 MOV)을 나열합니다. 이 접근 방식은 유연하며 endswith 메서드에서 파일 확장자를 변경함으로써 다른 유형의 파일을 나열하는 데도 사용할 수 있습니다.

5. 고급 디렉토리 목록 작업: 필터링 및 생성적 AI 기술 사용하기

Python의 내장 기능인 디렉토리 목록 작성은 매우 강력하지만, 더 고급 작업을 수행하는 데 도움이 되는 많은 제3자 라이브러리와 도구도 있습니다. 예를 들어, 특정 기준에 따라 검색 결과를 필터링하거나 생성적 AI 기법을 사용하여 디렉토리 목록 작성 프로세스의 일부를 자동화 할 수도 있습니다.

glob 모듈은 디렉토리 와일드카드 검색에서 파일 목록을 만드는 기능을 제공하는 도구 중 하나입니다. 특정 패턴과 일치하는 파일을 나열하려는 경우 특히 유용할 수 있습니다. 다음은 예입니다:

import glob
 
def list_files_matching_pattern(directory, pattern):
    return glob.glob(f'{directory}/{pattern}')
 
print(list_files_matching_pattern('/path/to/your/directory', '*.json'))

이렇게 하면 지정된 디렉토리에 있는 모든 JSON 파일 목록이 인쇄됩니다. 원하는 다른 유형의 파일과 일치하도록 패턴을 쉽게 수정할 수 있습니다.

생성적 AI에 대해서는 디렉토리 목록에서 많은 잠재적인 응용 프로그램이 있는 빠르게 진화하는 분야입니다. 예를 들어, 파일의 이름이나 기타 메타데이터를 기반으로 디렉토리 내에서 파일의 유형을 예측하거나, 파일의 내용을 기반으로 파일에 대한 설명적인 태그를 생성하는 데 생성적 AI 모델을 사용할 수 있습니다. 그러나 이러한 것들은 이 문서의 범위를 넘어선 고급 주제입니다.

결론과 추가 자료

이 문서에서는 Python을 사용하여 디렉토리의 모든 파일을 가져오는 방법에 대해 많은 내용을 다뤘습니다. 기본 os.listdir 함수, os.walk를 사용한 파일 재귀적 나열 방법, 확장자로 파일 필터링 방법, 이미지 및 비디오와 같은 특정 유형의 파일 나열 방법 등을 살펴보았습니다. 또한 패턴 일치를 위해 glob 모듈 사용 및 디렉토리 목록에서 생성적 AI의 잠재적인 응용 사례에도 언급했습니다.

그러나 학습할 내용은 항상 더 있습니다! 이 주제를 더 깊이 파고들기 위해 공식 Python 문서, Stack Overflow 및 Towards Data Science와 같은 자료를 확인하는 것을 추천합니다. 물론 배우는 가장 좋은 방법은 직접 실험해 보는 것이므로 자신의 프로젝트에서 이러한 기술을 실험해 보는 데 주저하지 마세요.

자주 묻는 질문

Python을 사용하여 디렉토리의 모든 파일을 나열하려면 어떻게 해야 합니까?

os.listdir 함수를 사용하여 디렉토리의 모든 파일을 나열할 수 있습니다. 이 함수는 경로로 지정된 디렉토리의 항목 이름을 포함하는 리스트를 반환합니다.

os.listdir의 구문은 어떻게 되나요?

os.listdir의 구문은 매우 간단합니다. os 모듈을 임포트한 다음 os.listdir(path)를 호출하면 됩니다. 여기서 path는 목록을 원하는 디렉토리의 경로입니다.

os.listdir의 결과를 특정 확장자의 파일만 표시하도록 필터링할 수 있나요?

네, os.listdir의 결과를 특정 확장자의 파일만 표시하도록 필터링할 수 있습니다. 이를 위해 파일 이름이 원하는 확장명로 끝나는지 확인하는 조건을 추가하면 됩니다.