[자동화#1] 파일 이름 일괄 변경 (사진 정리 필수 루틴)
한줄 요약:
수십 장의 사진이나 문서 이름을 하나하나 바꾸는 건 고통이야 😫
👉 파이썬으로 한 번에 자동 이름 바꾸기!
1. 목표
- 폴더 안의 파일 이름을 규칙적으로 한 번에 변경
- 예:
IMG_001.jpg,IMG_002.jpg… - 확장자는 그대로 유지하고, 번호 자동 증가
2. 완성 코드 (복붙)
# 파일 이름 일괄 변경 스크립트
import os
def rename_files(folder_path, prefix="file", start_num=1):
"""
folder_path : 폴더 경로
prefix : 새 파일 이름 접두사
start_num : 시작 번호
"""
files = os.listdir(folder_path)
files = [f for f in files if os.path.isfile(os.path.join(folder_path, f))]
print(f"총 {len(files)}개의 파일을 변경합니다...")
for i, filename in enumerate(files, start=start_num):
# 확장자 분리
name, ext = os.path.splitext(filename)
new_name = f"{prefix}_{i:03d}{ext}" # 예: file_001.jpg
src = os.path.join(folder_path, filename)
dst = os.path.join(folder_path, new_name)
os.rename(src, dst)
print(f"{filename} → {new_name}")
print("✅ 파일 이름 변경 완료!")
# 사용 예시
if __name__ == "__main__":
folder = input("변경할 폴더 경로를 입력하세요: ")
prefix = input("새 파일 이름 접두사를 입력하세요 (기본값: file): ") or "file"
start = input("시작 번호를 입력하세요 (기본값: 1): ")
start = int(start) if start else 1
rename_files(folder, prefix, start)
3. 사용 방법
1️⃣ 위 코드를 rename_files.py로 저장
2️⃣ 터미널(또는 명령 프롬프트)에서 실행:
python rename_files.py
3️⃣ 폴더 경로 입력 → 접두사 입력 → 시작번호 입력
4️⃣ 결과 예시:
photo1.jpg → trip_001.jpg
photo2.jpg → trip_002.jpg
photo3.jpg → trip_003.jpg
4. 주요 포인트
| 함수 | 역할 |
|---|---|
os.listdir() | 폴더 내 파일 목록 불러오기 |
os.path.splitext() | 이름과 확장자 분리 |
os.rename(기존, 새이름) | 파일 이름 변경 |
enumerate() | 자동으로 번호 매기기 |
5. 예제 응용: 특정 확장자만 변경
for f in files:
if f.lower().endswith(".jpg"): # JPG만 변경
...
🪄 이렇게 하면 .jpg 파일만 대상으로 변경돼요!
6. 예제 응용 2: 공백 제거 + 소문자 변환
for f in files:
new_name = f.replace(" ", "_").lower()
os.rename(os.path.join(folder_path, f),
os.path.join(folder_path, new_name))
📸 예시My Photo.JPG → my_photo.jpg
7. 주의사항
| 상황 | 문제 | 해결 |
|---|---|---|
| 동일한 이름 존재 | 덮어쓰기 오류 | prefix나 시작번호 조정 |
| 한글 경로 오류 | 인코딩 문제 | os.chdir(folder_path)로 경로 변경 |
| 폴더 경로 틀림 | 파일 없음 | 올바른 절대경로 입력 (C:\\Users\\...) |
8. 연습문제
1️⃣ .png 파일만 골라 image_001.png, image_002.png 식으로 바꾸기
2️⃣ 접두사 입력 대신 오늘 날짜 + 번호 형태로 이름 짓기
import datetime
prefix = datetime.date.today().strftime("%Y%m%d")
➡️ 20251104_001.jpg 같은 이름으로 저장됨!
이전 강좌 👈 [예제#3] 비밀번호 생성기: 안전한 랜덤 패스워드 만들기
다음 강좌 👉 [자동화#2] 폴더에서 특정 확장자만 모으기 (문서/사진 분류 자동화)