파이썬으로 하위 디렉터리 검색하기

파일과 디렉터리를 다루는 일은 프로그래밍에서 매우 흔합니다. 특히, 하위 디렉터리를 검색하는 것은 시스템 파일의 정리, 로그 파일의 분석 등 다양한 목적으로 사용됩니다. 이 강좌에서는 파이썬을 사용하여 하위 디렉터리를 효과적으로 검색하는 방법에 대해 자세히 알아보겠습니다.

파이썬은 파일과 디렉터리를 조작할 수 있는 여러 가지 라이브러리를 제공합니다. 이 글에서는 os 모듈과 glob 모듈, 그리고 pathlib 모듈을 사용하여 파이썬에서 하위 디렉터리를 검색하는 방법을 설명할 것입니다. 각 방법의 장단점을 비교하고, 최상의 사용 예제를 제시합니다.“` ### 1. Using the `os` Module “`html

os 모듈 사용하기

os 모듈은 운영체제와 상호작용할 수 있는 다양한 기능을 제공합니다. 이 모듈을 사용하면 파일과 디렉터리를 생성, 삭제, 변경할 수 있고, 파일의 경로와 속성, 권한 등을 조작할 수 있습니다. 특히, os.walk() 함수는 디렉터리 트리를 순회하면서 하위 디렉터리와 파일을 검색하는 데 유용합니다.

os.walk() 함수

os.walk() 함수는 루트 디렉터리부터 시작하여 모든 하위 디렉터리를 순회하면서 경로, 디렉터리명, 파일명을 가져옵니다. 함수의 반환 값은 튜플이며, 각 요소는 (디렉터리 경로, 디렉터리 내의 모든 하위 폴더 목록, 디렉터리 내의 모든 파일 목록)을 포함합니다.


import os

def search_subdirectories(root_dir):
    for dirpath, dirnames, filenames in os.walk(root_dir):
        print(f'현재 디렉터리 경로: {dirpath}')
        print(f'하위 디렉터리들: {dirnames}')
        print(f'파일들: {filenames}')
        print('---------------------')
        
search_subdirectories('/mnt/data')  # 검색할 루트 디렉터리의 경로를 지정하세요.

위 코드에서는 os.walk()를 사용하여 주어진 디렉터리의 모든 하위 디렉터리 및 파일을 출력합니다. 각 경로에 대해 현재 디렉터리, 하위 디렉터리 및 파일들을 콘솔에 출력합니다.

필터링 구현하기

대규모 디렉터리에서 특정 파일 확장자나 이름 패턴만 필요할 경우, 필터링을 통해 원하는 정보만 검색할 수 있습니다. 다음 코드는 사용자가 ‘.txt’ 파일만 검색할 수 있도록 필터링을 시연합니다.


def search_text_files(root_dir):
    for dirpath, dirnames, filenames in os.walk(root_dir):
        text_files = [f for f in filenames if f.endswith('.txt')]
        if text_files:
            print(f'{dirpath}에서 찾은 텍스트 파일: {text_files}')
        
search_text_files('/mnt/data')  # 검색할 디렉터리를 지정하세요.

위의 예에서는 ‘.txt’ 확장자를 가진 파일만 검색하여 출력합니다. 필요에 따라 다른 패턴이나 조건으로 필터링하여 유연하게 사용할 수 있습니다.“` ### 2. Using the `glob` Module “`html

glob 모듈 사용하기

glob 모듈은 유닉스 스타일의 경로 이름 패턴을 사용하여 파일을 검색할 수 있도록 합니다. 간단한 패턴 매칭을 통해 특정 확장자나 이름 패턴에 해당하는 파일을 쉽게 검색할 수 있습니다.

glob.glob() 함수

glob.glob() 함수는 지정한 패턴과 일치하는 모든 경로명을 반환합니다. 파이썬 3.5 이상에서는 ** 패턴을 사용하여 재귀적으로 하위 디렉터리를 검색할 수 있습니다.


import glob

def search_with_glob(pattern):
    files = glob.glob(pattern, recursive=True)
    for file in files:
        print(file)
        
search_with_glob('/mnt/data/**/*.txt')  # 하위 디렉터리까지 포함하여 모든 .txt 파일 검색

위 코드에서는 ** 패턴을 사용하여 모든 텍스트 파일을 대상 디렉터리 및 하위 디렉터리에서 검색합니다. glob 모듈은 사용이 간편하면서도 매우 강력한 파일 검색 기능을 제공합니다.“` ### Conclusion “`html

결론

이번 강좌에서는 파이썬을 사용하여 하위 디렉터리를 검색하는 방법을 배웠습니다. os.walk() 함수는 깊이 우선 탐색을 통한 디렉터리 트리 순회를 가능하게 하며, glob 모듈은 패턴 매칭을 통한 간단하고 강력한 파일 검색을 제공합니다. 각 방법은 사용 목적에 따라 선택하여 적용할 수 있습니다.

파이썬의 또 다른 파일 관련 모듈에는 pathlib가 있으며, 이 모듈은 객체 지향적인 접근 방식을 제공하여 파일 경로 조작을 더욱 직관적으로 수행할 수 있습니다. pathlib에 대해서는 별도의 강좌에서 다루도록 하겠습니다.

이 강좌를 통해 여러분이 파일 탐색 작업을 수행하는 데 필요한 기초와 팁을 얻으셨길 바랍니다. 추가 질문이 있거나 특정 사용 사례에 대해 논의하고 싶으신 경우 아래 댓글 섹션에 남겨주세요.

답글 남기기

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