다양한 부서에서 취합된 자료나 인터넷에서 다운로드한 수백 개의 이미지, 문서 파일들을 정리하다 보면 파일 이름 규칙이 제각각이어서 곤란한 경우가 많습니다. 수작업으로 이름을 하나하나 바꾸는 것은 불가능에 가깝고, 윈도우 기본 기능을 이용하면 세밀한 이름 규칙을 지정하기 어렵습니다. 파이썬의 표준 내장 라이브러리인 os 모듈을 활용하면, 단 몇 줄의 코드만으로 수백 수천 개의 파일 이름을 내가 원하는 특정 접두사, 날짜, 일련번호 형태로 일괄 변경(Batch Rename)할 수 있습니다. 본 포스팅에서는 안전하고 간결한 파일명 자동화 스크립트 구축 방법을 소개합니다.
파일명 규칙을 한 번에 수정해야 할 때
파이썬 os.listdir 및 os.rename 함수 이해
파이썬으로 파일 시스템을 제어할 때 가장 기본이 되는 무기가 바로 os 모듈입니다. 별도의 외부 패키지 설치 없이 import os 선언만으로 바로 사용할 수 있어 활용도가 매우 높습니다. 핵심이 되는 함수는 두 가지입니다. 첫째, os.listdir(폴더경로)는 지정한 디렉터리 내부에 있는 모든 파일과 폴더의 이름을 리스트 형태로 가져옵니다. 둘째, os.rename(기존경로, 새경로)은 실제 파일의 이름을 새로운 이름으로 변경하는 물리적 작업을 수행합니다. 이 두 함수와 파이썬의 반복문(for문)을 조합하면 폴더 내 전체 파일을 순차적으로 탐색하며 이름을 바꾸는 자동화 루프가 완성됩니다.
대량의 파일 이름 정렬 코드 구현
특정 접두사 추가 및 확장자별 파일 이름 정렬 코드
폴더 내의 특정 파일들만 골라내어 원하는 접두사(Prefix)와 대시(-), 그리고 증가하는 숫자를 붙여 정렬하는 전체 파이썬 스크립트 코드입니다.
Python
import os
def batch_rename_files(folder_path, prefix):
# 지정 폴더 내의 모든 파일 목록 탐색
all_files = os.listdir(folder_path)
# 숨김 파일이나 디렉터리는 제외하고 실제 파일만 필터링
files = [f for f in all_files if os.path.isfile(os.path.join(folder_path, f))]
# 정렬의 일관성을 위해 파일명 순으로 정렬
files.sort()
print(f"총 {len(files)}개의 파일을 찾았습니다. 이름 변경을 시작합니다.")
# 1번부터 시작하는 일련번호 카운터
count = 1
for file_name in files:
old_path = os.path.join(folder_path, file_name)
# 원본 파일의 확장자 분리 (예: .jpg, .xlsx)
file_ext = os.path.splitext(file_name)[1]
# 새로운 파일명 생성 (예: 매출자료_001.xlsx)
# :03d는 숫자를 3자리로 맞추고 빈 곳을 0으로 채웁니다 (001, 002...)
new_file_name = f"{prefix}_{count:03d}{file_ext}"
new_path = os.path.join(folder_path, new_file_name)
try:
os.rename(old_path, new_path)
print(f"변경 완료: {file_name} -> {new_file_name}")
count += 1
except Exception as e:
print(f"이름 변경 실패 ({file_name}): {e}")
print("\n모든 파일의 이름 변경 작업이 완료되었습니다.")
# 파일들이 모여있는 폴더 경로와 부여할 접두사(이름) 설정
target_folder = r"C:\Your\Target\Folder\Path"
file_prefix = "업무보고"
if __name__ == "__main__":
batch_rename_files(target_folder, file_prefix)
이 코드는 os.path.splitext()를 사용하여 파일의 본래 확장자를 안전하게 보존하므로, 이미지나 엑셀, PDF 등 포맷에 상관없이 원본 형식을 유지하며 이름만 깔끔하게 정렬해 줍니다. 또한 count:03d 포맷팅을 적용해 파일 이름이 정렬될 때 순서가 뒤바뀌는 윈도우 정렬 오류를 원천 차단합니다. 작업 전 대상 폴더 경로와 원하는 접두사 이름을 지정한 뒤 스크립트를 구동하면 즉시 파일 정리가 완료됩니다.