본문 바로가기
파이썬

파이썬으로 파일 이름을 ‘수정한 날짜’ 기준으로 일괄 변경하기

by 코딩-가이드 2025. 6. 8.
반응형

 

우리는 컴퓨터를 사용하면서 수많은 파일을 다운로드하고, 수정하고, 저장합니다. 그런데 시간이 지나다 보면, 다음과 같은 상황을 겪게 됩니다.

  • 사진, 문서, 텍스트 파일 등이 전혀 규칙 없이 저장되어 있어 정리하기 힘들다.
  • 파일 이름이 중복되어 덮어쓰기를 막기 위해 무작위로 _1, _2 등을 붙였다.
  • 수정한 날짜 기준으로 정리하고 싶은데, 일일이 수작업은 너무 번거롭다.

이럴 때 파이썬을 사용하면 파일 이름을 수정 시간 기준으로 자동 정렬할 수 있습니다. 이번 글에서는 간단한 스크립트를 통해 폴더 내의 모든 파일 이름을 YYYYMMDD_HHMMSS.확장자 형식으로 바꾸는 방법을 소개합니다.

 


1. 프로그램 기능 요약

 

이 프로그램은 다음과 같은 기능을 수행합니다:

  1. 지정한 폴더 내 모든 파일을 검사합니다.
  2. 각 파일의 수정 시간을 읽어옵니다.
  3. 수정 시간을 기반으로 새로운 파일명을 생성합니다.
  4. 이름이 중복되지 않도록 번호를 붙여 안전하게 변경합니다.

예를 들어 report.docx라는 파일이 2024년 6월 1일 오전 10시 15분에 마지막으로 수정되었다면, 이름은 다음과 같이 바뀝니다:

report.docx → 20240601_101500.docx

 

2. 파이썬 코드 전체

import os
import datetime

def rename_files_with_modified_time(folder_path):
    if not os.path.isdir(folder_path):
        print(f"유효하지 않은 경로입니다: {folder_path}")
        return

    files = os.listdir(folder_path)
    used_names = set()

    for filename in files:
        file_path = os.path.join(folder_path, filename)

        if os.path.isfile(file_path):
            # 파일의 마지막 수정 시간 가져오기
            modified_time = os.path.getmtime(file_path)
            dt = datetime.datetime.fromtimestamp(modified_time)
            base_name = dt.strftime("%Y%m%d_%H%M%S")

            # 확장자 추출
            _, ext = os.path.splitext(filename)

            # 중복 방지 처리
            new_name = f"{base_name}{ext}"
            counter = 1
            while new_name in used_names or os.path.exists(os.path.join(folder_path, new_name)):
                new_name = f"{base_name}_{counter}{ext}"
                counter += 1

            new_path = os.path.join(folder_path, new_name)
            os.rename(file_path, new_path)
            used_names.add(new_name)

            print(f"{filename} → {new_name}")

# 예시: 변경할 폴더 경로 설정
folder = "C:/Users/yourname/Desktop/sample_folder"
rename_files_with_modified_time(folder)

 

3. 코드 설명

 

  • os.listdir(): 폴더 내의 파일 목록을 불러옵니다.
  • os.path.getmtime(): 파일의 수정된 시간(mtime)을 가져옵니다.
  • datetime.fromtimestamp(): Unix 시간 값을 YYYYMMDD_HHMMSS 문자열로 변환합니다.
  • os.rename(): 파일 이름을 새 이름으로 변경합니다.
  • 중복 방지를 위해 set 자료형을 사용하고, 필요 시 숫자 카운터를 붙여 충돌을 피합니다.

 

4. 사용 팁

 

 

  • 중요한 파일은 백업해두기: 프로그램 실행 시 실제로 파일 이름이 바뀌므로, 중요한 데이터는 복사해두는 것이 좋습니다.
  • 확장자별로 필터링하고 싶다면 filename.endswith('.jpg') 등 조건을 추가하세요.
  • 서브 폴더까지 재귀 처리가 필요하다면 os.walk()로 코드를 확장할 수 있습니다.

 

 

5. 실행 예시

sample1.png → 20240530_093015.png
draft.txt → 20240531_172445.txt

 


 

이처럼 파이썬을 활용하면 반복적이고 번거로운 작업을 단 몇 줄의 코드로 자동화할 수 있습니다. 수정 시간 기준으로 파일 이름을 정리하면 정렬이 쉬워지고, 버전 관리도 더 체계적으로 할 수 있습니다.

반응형