[파이썬] shutil 디렉토리 트리 복사 중 파일 필터링하기

파이썬은 shutil 모듈을 통해 파일 및 디렉토리를 복사, 이동 또는 삭제할 수 있는 강력한 기능을 제공합니다. 이러한 기능 중에서 특정 조건에 따라 파일을 필터링해야 할 때가 있습니다. 이 글에서는 shutil을 사용하여 디렉토리 트리를 복사할 때 특정 파일을 필터링하는 방법에 대해 알아보겠습니다.

필터링할 파일 조건 설정하기

우선 필터링할 파일의 조건을 설정해야 합니다. 예를 들어, 파일의 확장자, 파일 크기, 수정 날짜 등의 조건을 기준으로 필터링할 수 있습니다. 이 예제에서는 파일의 확장자를 기준으로 필터링하는 방법을 다루겠습니다.

import shutil
import os

def filter_files(source_dir, destination_dir, extension):
    for foldername, subfolders, filenames in os.walk(source_dir):
        for filename in filenames:
            if filename.endswith(extension):
                file_path = os.path.join(foldername, filename)
                shutil.copy2(file_path, destination_dir)

위 코드에서 filter_files 함수는 source_dir에서 destination_dir로 디렉토리 트리를 복사하며, 복사할 파일을 확장자로 필터링합니다.

코드 사용 예제

아래 코드는 실제로 filter_files 함수를 호출하여 디렉토리 트리 복사를 수행하는 사용 예제입니다. 이 예제는 source_dir의 디렉토리 트리를 destination_dir로 복사하면서 확장자가 “.txt”인 파일만 필터링합니다.

source_dir = "/path/to/source_directory"
destination_dir = "/path/to/destination_directory"
extension = ".txt"

filter_files(source_dir, destination_dir, extension)

위 예제에서 source_dirdestination_dir 변수를 각각 실제 디렉토리 경로로 바꿔줘야 합니다.

요약

파이썬의 shutil 모듈을 사용하면 디렉토리 트리를 비롯한 파일 및 디렉토리를 쉽게 복사할 수 있습니다. 필터링하고자 하는 파일의 조건을 설정하여 원하는 파일만 복사하는 기능도 제공됩니다. 이 글에서는 확장자를 기준으로 파일을 필터링하는 예제를 다루었습니다. 필요에 따라 다른 조건을 기준으로 파일을 필터링할 수 있으므로 shutil 모듈의 다양한 기능을 활용해 복사 작업을 유연하게 조정할 수 있습니다.

참조: Python shutil 모듈 공식 문서