Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 하위 폴더까지 한 번에! 재귀적으로 여러 파일 이름 바꾸는 방법

파일이 수백 개씩 있을 때 하나하나 이름을 바꾸는 것은 비효율적입니다. Python의 os.walkos.rename을 활용하면 폴더와 그 하위 폴더까지 탐색하면서 조건에 맞는 파일명을 자동으로 일괄 변경할 수 있습니다.

핵심 원리

os.walk는 지정한 폴더를 시작으로 모든 하위 디렉터리를 재귀적으로 순회하며 각 경로의 폴더명, 하위 폴더 목록, 파일 목록을 반환합니다. 이 정보를 바탕으로 os.rename으로 파일 이름을 변경하면 됩니다.

예제 코드

import os

def replace(folder_path, old, new):
    for path, subdirs, files in os.walk(folder_path):
        for name in files:
            if(old.lower() in name.lower()):
                file_path = os.path.join(path, name)
                new_name = os.path.join(path, name.lower().replace(old, new))
                os.rename(file_path, new_name)

사용 방법

replace('my_folder', 'IMG', 'Image')

코드 설명

위 함수는 다음과 같은 순서로 동작합니다.

1. os.walk가 'my_folder'와 그 안의 모든 하위 폴더를 순회합니다.
2. 각 폴더에서 파일 이름에 대소문자 구분 없이 'IMG'가 포함되어 있는지 확인합니다.
3. 포함된 파일이라면 전체 경로를 만들고, 'IMG'를 'Image'로 교체한 새 이름을 생성합니다.
4. os.rename으로 기존 파일을 새 이름으로 변경합니다.

실행 결과, 해당 폴더와 모든 하위 폴더 내의 파일들에서 'IMG'가 'Image'로 일괄 치환됩니다.

활용 팁

- 대소문자 구분 없이 검색하고 싶지 않다면 if(old.lower() in name.lower()) 부분을 if(old in name)으로 수정하세요.
- 확장자만 변경하고 싶다면 os.path.splitext를 함께 사용하면 편리합니다.
- 실수로 인한 데이터 손실을 방지하려면 먼저 소량의 테스트 폴더로 동작을 확인한 뒤 적용하는 것이 좋습니다.
- 필요에 따라 정규식(re 모듈)을 활용하면 더 복잡한 이름 변경 규칙도 손쉽게 구현할 수 있습니다.

이 함수는 상황에 맞게 자유롭게 수정하여 사용할 수 있으므로, 반복적인 파일 관리 작업을 자동화하는 데 유용하게 활용해 보세요.