유튜브 채널 분석 자동화! 파이썬으로 영상 정보 자동 수집하기
"IMG_0001.jpg, IMG_0002.jpg… 카메라에서 받은 사진 200장을 날짜별 이름으로 바꿔야 한다", "파일명에 '임시'라는 단어가 들어간 파일을 전부 '최종'으로 바꿔야 한다", "프로젝트 폴더 파일에 순번을 붙여서 정리하고 싶다"…
윈도우 탐색기에서 파일 이름을 F2로 하나씩 수정하는 방법은 수십 개만 되어도 한계가 있습니다. 파이썬을 한 번만 세팅해두면 폴더 안의 모든 파일에 원하는 규칙을 적용해 파일명을 한꺼번에 바꿀 수 있습니다. 실제 변경 전에 미리보기를 확인하는 안전 기능도 포함되어 있습니다.
파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.
이번 스크립트는 파이썬 기본 내장 라이브러리(pathlib, os, re)만 사용합니다. 별도 설치가 필요 없습니다.
💡 이 코드로 할 수 있는 것: 특정 단어 교체, 앞뒤에 텍스트 추가, 날짜·순번 자동 삽입, 공백을 언더스코어로 변환, 대소문자 통일 등 다양한 규칙을 조합해 파일명을 일괄 변경합니다. 실제 변경 전 미리보기로 결과를 먼저 확인할 수 있습니다.
아래 코드를 그대로 복사해서 메모장에 붙여넣고, rename_files.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.
import re
from pathlib import Path
from datetime import datetime
# ① 설정
FOLDER_PATH = r"C:\Users\내이름\Desktop\파일모음" # ← 변경할 파일이 있는 폴더
DRY_RUN = True # ← True: 미리보기만 (실제 변경 안 함) / False: 실제 변경 실행
EXTENSIONS = [] # ← 특정 확장자만 처리 (예: [".jpg", ".png"]) 빈칸이면 전체
# ② 이름 변경 규칙 함수 (원하는 규칙만 주석 해제해서 사용)
def new_name(stem: str, suffix: str, index: int) -> str:
"""
stem : 확장자를 제외한 파일명
suffix : 확장자 (예: .jpg)
index : 파일 순번 (0부터 시작)
반환값 : 새 파일명 (확장자 포함)
"""
# 규칙 1: 특정 단어 교체 ("임시" → "최종")
stem = stem.replace("임시", "최종")
# 규칙 2: 앞에 순번 추가 (예: 001_파일명.jpg)
# stem = f"{index+1:03d}_{stem}"
# 규칙 3: 앞에 오늘 날짜 추가 (예: 20260608_파일명.jpg)
# today = datetime.now().strftime("%Y%m%d")
# stem = f"{today}_{stem}"
# 규칙 4: 공백을 언더스코어로 변환
# stem = stem.replace(" ", "_")
# 규칙 5: 소문자로 통일
# stem = stem.lower()
# 규칙 6: 정규식으로 숫자만 제거
# stem = re.sub(r'\d+', '', stem).strip()
return stem + suffix
# ③ 폴더 탐색 및 변경 실행
folder = Path(FOLDER_PATH)
files = sorted([f for f in folder.iterdir()
if f.is_file() and
(not EXTENSIONS or f.suffix.lower() in EXTENSIONS)])
print(f" 📂 처리할 파일: {len(files)}개")
if DRY_RUN:
print(" ⚠ [미리보기 모드] 실제 변경은 일어나지 않습니다.\n")
renamed = 0
skipped = 0
for i, file in enumerate(files):
new = new_name(file.stem, file.suffix, i)
dest = file.parent / new
if file.name == new:
skipped += 1
continue # 변경 없으면 건너뜀
if DRY_RUN:
print(f" {file.name} → {new}")
else:
if dest.exists():
print(f" ⚠ 건너뜀 (이름 충돌): {new}")
skipped += 1
else:
file.rename(dest)
print(f" ✔ {file.name} → {new}")
renamed += 1
if DRY_RUN:
print(f"\n 미리보기 완료. 결과가 맞으면 DRY_RUN = False로 변경 후 다시 실행하세요.")
else:
print(f"\n✅ 완료! 변경: {renamed}개 / 건너뜀: {skipped}개")
파일명 변경은 되돌리기 어렵기 때문에 반드시 2단계로 나눠서 진행합니다.
FOLDER_PATH에 파일이 있는 폴더 경로를 입력합니다.#을 삭제해 활성화합니다.DRY_RUN = True 상태로 먼저 실행합니다:python rename_files.py
미리보기 결과가 맞으면 DRY_RUN = False로 바꾼 뒤 다시 실행합니다. 정상 실행 시 터미널에 이렇게 출력됩니다:
📂 처리할 파일: 5개 ⚠ [미리보기 모드] 실제 변경은 일어나지 않습니다. 보고서_임시_v1.docx → 보고서_최종_v1.docx 계획서_임시.xlsx → 계획서_최종.xlsx 회의록_임시_0601.pdf → 회의록_최종_0601.pdf 미리보기 완료. 결과가 맞으면 DRY_RUN = False로 변경 후 다시 실행하세요.
오류 1: 변경 후 원래 이름으로 되돌리고 싶음
파일명 변경은 되돌리기 기능이 없습니다. 반드시 DRY_RUN = True로 미리보기를 확인한 후 실행하세요. 중요한 파일이라면 변경 전 폴더 전체를 ZIP으로 백업해두는 것을 권장합니다. ZIP 자동 압축 편을 참고하세요.
오류 2: 이름 충돌 경고가 많이 뜸
변경 후 파일명이 같아지는 경우입니다. 예를 들어 "임시1.txt"와 "임시2.txt"를 동시에 "최종.txt"로 바꾸려 하면 충돌이 발생합니다. 규칙 2(순번 추가)를 함께 적용하면 충돌을 방지할 수 있습니다.
오류 3: 한글 파일명 처리 중 UnicodeError
파일명에 특수문자나 이모지가 포함된 경우입니다. 코드 저장 시 인코딩을 UTF-8로 설정했는지 확인하세요. 저장 시 인코딩 설정은 메모장 → 다른 이름으로 저장 → 인코딩: UTF-8 선택입니다.
스마트폰·카메라 사진의 촬영 날짜를 파일명에 자동으로 넣는 방법입니다. 규칙 함수를 아래처럼 교체하세요.
import os
def new_name(stem: str, suffix: str, index: int) -> str:
file_path = folder / (stem + suffix)
# 파일 수정 날짜 기준으로 이름 생성
mtime = os.path.getmtime(file_path)
date_str = datetime.fromtimestamp(mtime).strftime("%Y%m%d_%H%M%S")
return f"{date_str}_{index+1:03d}{suffix}"
💡 이전 게시글과 결합하면: 파일 키워드 자동 분류 편으로 파일을 폴더별로 정리한 뒤, 이 스크립트로 파일명을 통일된 규칙으로 변경하면 체계적인 파일 관리 시스템을 완성할 수 있습니다.
이 코드를 응용하면 정규식으로 복잡한 패턴의 파일명을 변경하거나, 여러 폴더를 한꺼번에 처리하는 것도 가능합니다.