윈도우에서 파일명에 날짜 자동으로 넣는 파이썬 코드 완벽 정리

매일 쌓이는 사진, 문서, 보고서 파일들을 날짜별로 정리하고 싶은데 일일이 이름을 바꾸기 번거로우신가요? 파이썬 몇 줄이면 폴더 안의 모든 파일 이름에 날짜를 자동으로 추가할 수 있어요.


기본 코드로 바로 시작하기


import os
from datetime import datetime

# 작업할 폴더 경로 설정
folder_path = r'C:\Users\사용자\Documents\작업폴더'

# 오늘 날짜 문자열 생성
date_str = datetime.now().strftime('%Y-%m-%d')

# 폴더 내 파일 목록 가져오기
file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    
    # 파일만 처리 (폴더는 제외)
    if os.path.isfile(old_file):
        new_filename = f"{date_str}_{filename}"
        new_file = os.path.join(folder_path, new_filename)
        os.rename(old_file, new_file)
        print(f"{filename} → {new_filename}")


이 코드를 실행하면 파일명이 변경돼요. 단 몇 초만에 수십, 수백 개의 파일을 일괄 처리할 수 있어요.


파란 배경에 흰색과 파란색으로 된 3개의 3D 문서 아이콘이 나란히 배치된 이미지


날짜 형식 자유롭게 바꾸기


strftime() 함수의 포맷 문자열만 바꾸면 원하는 형식으로 날짜를 표현할 수 있어요.


# 한국식 날짜 표기
date_str = datetime.now().strftime('%Y.%m.%d')  # 2025.07.25

# 숫자만으로 표기
date_str = datetime.now().strftime('%Y%m%d')    # 20250725

# 연월만 표기
date_str = datetime.now().strftime('%Y-%m')     # 2025-07

# 미국식 표기
date_str = datetime.now().strftime('%m-%d-%Y')  # 07-25-2025


시간까지 포함해서 더 정확하게


같은 날 여러 번 작업하는 경우라면 시간까지 포함하면 좋아요.


import os
from datetime import datetime

folder_path = r'C:\Users\사용자\Documents\작업폴더'

# 날짜와 시간을 함께 포함
date_str = datetime.now().strftime('%Y-%m-%d_%H%M%S')

file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    if os.path.isfile(old_file):
        new_filename = f"{date_str}_{filename}"
        new_file = os.path.join(folder_path, new_filename)
        os.rename(old_file, new_file)


이렇게 하면

2025-07-25_143052_보고서.docx

형태로 초 단위까지 정확하게 기록돼요.


파일 생성일 기준으로 이름 바꾸기


현재 날짜가 아닌 파일의 생성일이나 수정일을 기준으로 하고 싶다면 이 코드를 사용하세요.


import os
from datetime import datetime

folder_path = r'C:\Users\사용자\Documents\사진폴더'
file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    if os.path.isfile(old_file):
        # 파일 생성 시간 가져오기
        ctime = os.path.getctime(old_file)
        date_str = datetime.fromtimestamp(ctime).strftime('%Y-%m-%d')
        
        # 파일 수정 시간을 쓰고 싶다면
        # mtime = os.path.getmtime(old_file)
        # date_str = datetime.fromtimestamp(mtime).strftime('%Y-%m-%d')
        
        new_filename = f"{date_str}_{filename}"
        new_file = os.path.join(folder_path, new_filename)
        os.rename(old_file, new_file)


사진 파일 정리할 때 특히 유용해요. 촬영일 기준으로 자동 정렬되니까요.


중복 파일명 자동 처리하기


같은 날짜에 같은 이름의 파일이 여러 개 있을 수 있잖아요. 이럴 때 자동으로 번호를 붙여주는 똑똑한 코드예요.


import os
from datetime import datetime

folder_path = r'C:\Users\사용자\Documents\작업폴더'
date_str = datetime.now().strftime('%Y-%m-%d')
file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    if os.path.isfile(old_file):
        # 파일명과 확장자 분리
        base, ext = os.path.splitext(filename)
        new_base = f"{date_str}_{base}"
        new_file = os.path.join(folder_path, f"{new_base}{ext}")
        
        # 중복 체크 및 번호 붙이기
        count = 1
        while os.path.exists(new_file):
            new_file = os.path.join(folder_path, f"{new_base}_({count}){ext}")
            count += 1
            
        os.rename(old_file, new_file)
        print(f"{filename} → {os.path.basename(new_file)}")


이 코드는

2025-07-25_보고서.docx

2025-07-25_보고서_(1).docx

2025-07-25_보고서_(2).docx

이런 식으로 자동으로 번호를 붙여줘요.


특정 확장자만 선택해서 처리하기


모든 파일이 아니라 특정 파일만 처리하고 싶을 때는 이렇게 하세요.


import os
from datetime import datetime

folder_path = r'C:\Users\사용자\Documents\사진폴더'
date_str = datetime.now().strftime('%Y-%m-%d')

# 처리할 확장자 목록
target_extensions = ['.jpg', '.jpeg', '.png', '.gif']

file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    if os.path.isfile(old_file):
        # 확장자 확인
        _, ext = os.path.splitext(filename)
        if ext.lower() in target_extensions:
            new_filename = f"{date_str}_{filename}"
            new_file = os.path.join(folder_path, new_filename)
            os.rename(old_file, new_file)
            print(f"이미지 파일 처리: {filename} → {new_filename}")


날짜를 파일명 뒤에 붙이기


앞이 아니라 뒤에 붙이고 싶다면 순서만 바꾸면 돼요.


import os
from datetime import datetime

folder_path = r'C:\Users\사용자\Documents\작업폴더'
date_str = datetime.now().strftime('%Y-%m-%d')
file_list = os.listdir(folder_path)

for filename in file_list:
    old_file = os.path.join(folder_path, filename)
    if os.path.isfile(old_file):
        base, ext = os.path.splitext(filename)
        new_filename = f"{base}_{date_str}{ext}"
        new_file = os.path.join(folder_path, new_filename)
        os.rename(old_file, new_file)


실무에서 정말 유용한 활용법


제가 실제로 써본 경험으로는 이런 상황에서 진짜 시간을 아껴줘요.


매일 쌓이는 업무 보고서나 회의록 정리할 때 날짜별로 자동 분류되니 나중에 찾기가 쉬워요. 특히 프로젝트별로 폴더를 만들어두고 이 스크립트를 돌리면 버전 관리가 저절로 돼요.


사진 정리할 때도 마찬가지예요. 휴대폰에서 옮긴 사진들이 IMG_001.jpg 같은 이름으로 되어 있잖아요. 이걸 날짜별로 바꿔두면 몇 년 뒤에도 언제 찍은 사진인지 바로 알 수 있어요.


안전하게 사용하는 팁


실수로 중요한 파일을 잘못 바꾸면 곤란하니까 이렇게 하세요.


import os
from datetime import datetime
import shutil

# 원본 폴더와 백업 폴더
source_folder = r'C:\Users\사용자\Documents\원본'
backup_folder = r'C:\Users\사용자\Documents\백업'

# 백업 폴더 생성
if not os.path.exists(backup_folder):
    os.makedirs(backup_folder)

# 먼저 백업하고 이름 변경
date_str = datetime.now().strftime('%Y-%m-%d')
file_list = os.listdir(source_folder)

for filename in file_list:
    old_file = os.path.join(source_folder, filename)
    if os.path.isfile(old_file):
        # 백업
        backup_file = os.path.join(backup_folder, filename)
        shutil.copy2(old_file, backup_file)
        
        # 이름 변경
        new_filename = f"{date_str}_{filename}"
        new_file = os.path.join(source_folder, new_filename)
        os.rename(old_file, new_file)
        print(f"백업 완료 후 변경: {filename} → {new_filename}")


PowerShell이나 다른 방법도 있지만...


PowerShell로도 비슷한 작업을 할 수 있어요. 전용 리네임 소프트웨어도 있고요. 하지만 파이썬의 장점은 확장성이에요. 날짜 형식을 자유롭게 바꾸고, 조건을 추가하고, 다른 작업과 연계하기가 쉬워요.


무엇보다 한 번 만들어두면 계속 재사용할 수 있고, 필요에 따라 조금씩 수정해서 쓸 수 있다는 게 큰 장점이에요. 처음엔 복잡해 보여도 몇 번 써보면 정말 편리해요.


Notion 페이지를 마크다운 파일로 자동 백업하는 방법