반응형
우리는 컴퓨터를 사용하면서 수많은 파일을 다운로드하고, 수정하고, 저장합니다. 그런데 시간이 지나다 보면, 다음과 같은 상황을 겪게 됩니다.
- 사진, 문서, 텍스트 파일 등이 전혀 규칙 없이 저장되어 있어 정리하기 힘들다.
- 파일 이름이 중복되어 덮어쓰기를 막기 위해 무작위로 _1, _2 등을 붙였다.
- 수정한 날짜 기준으로 정리하고 싶은데, 일일이 수작업은 너무 번거롭다.
이럴 때 파이썬을 사용하면 파일 이름을 수정 시간 기준으로 자동 정렬할 수 있습니다. 이번 글에서는 간단한 스크립트를 통해 폴더 내의 모든 파일 이름을 YYYYMMDD_HHMMSS.확장자 형식으로 바꾸는 방법을 소개합니다.
1. 프로그램 기능 요약
이 프로그램은 다음과 같은 기능을 수행합니다:
- 지정한 폴더 내 모든 파일을 검사합니다.
- 각 파일의 수정 시간을 읽어옵니다.
- 수정 시간을 기반으로 새로운 파일명을 생성합니다.
- 이름이 중복되지 않도록 번호를 붙여 안전하게 변경합니다.
예를 들어 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
이처럼 파이썬을 활용하면 반복적이고 번거로운 작업을 단 몇 줄의 코드로 자동화할 수 있습니다. 수정 시간 기준으로 파일 이름을 정리하면 정렬이 쉬워지고, 버전 관리도 더 체계적으로 할 수 있습니다.
반응형
'파이썬' 카테고리의 다른 글
파이썬으로 간단하게 만들어본 SPY ETF 주가 예측 프로그램 (0) | 2025.04.22 |
---|---|
TensorFlow CPU 최적화 메시지 해결 방법: SSE, AVX 경고 무시해도 될까? (0) | 2025.04.16 |
TensorFlow 설치시 “Could not find a version that ....” 오류 해결방법 (0) | 2025.04.13 |
파이썬에서 텐서플로(TensorFlow) 설치 및 업그레이드, 버전확인 방법 설명 (1) | 2025.04.11 |
파이썬 matplotlib에서 한글 폰트 깨짐, 마이너스(-) 깨짐 문제 해결하기 (0) | 2025.04.10 |