![[파이썬 자동화] CSV 파일로 수백 개 파일명 한 번에 바꾸는 초간단 방법](https://blog.kakaocdn.net/dna/mRY8Y/dJMcajHkP7c/AAAAAAAAAAAAAAAAAAAAAFG6BfhMVqmA8nj9YTx1Yf_vvk2eQtjjPWYXGQ9Ky7lt/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=6X9y6KEMUXP5bCb%2Bz3ImB%2FVbDF8%3D)
혹시 '뤼튼 AI 코딩 과제'를 수행 중이시거나, 회사에서 업무 자료를 정리하시면서 수십 개의 파일 이름을 하나하나 'F2' 키 눌러가며 바꾸고 계시진 않나요? 😢
저도 예전에 보고서 파일 수십 개를 `보고서_v1_수정.hwp`, `보고서_v2_최종.hwp`, `보고서_v3_진짜최종.hwp`... 이렇게 관리하다가 날짜별로 깔끔하게 정리하라는 요청을 받고 한숨부터 쉬었던 기억이 나네요. 하지만 파이썬을 알고 나서는 이런 단순 반복 작업(노가다)에서 해방될 수 있었습니다!
오늘은 바로 이 지루한 작업을 단번에 해결해 줄 **'CSV 파일을 이용한 파이썬 파일명 일괄변경'** 방법을 소개해 드릴게요. 코딩 초보자분들도 쉽게 따라 하실 수 있으니 걱정 마시고 천천히 따라와 보세요! 😊
1. 왜 파이썬(Python)인가요? 🤔
물론 파일명을 바꿔주는 좋은 유료 프로그램들도 많습니다. 하지만 우리가 파이썬을 배워야 하는 이유는 **'자유도'**와 **'확장성'** 때문입니다.
파이썬을 이용하면 단순히 파일명을 바꾸는 것뿐만 아니라, 특정 단어가 포함된 파일만 골라서 바꾸거나, 파일 확장자를 변경하거나, 심지어 파일명에 오늘 날짜를 자동으로 추가하는 등 **내가 원하는 거의 모든 조건**을 구현할 수 있습니다.
한 번 만들어 둔 스크립트는 언제든 재사용할 수 있으니, 그야말로 나만의 강력한 자동화 도구가 생기는 셈이죠.
오늘 우리가 만들 스크립트의 작동 원리는 간단합니다.
1. 엑셀(CSV)로 **'바꾸기 전 이름(Before)'**과 **'바꿀 이름(After)'** 목록을 만든다.
2. 파이썬이 이 목록(CSV)을 한 줄씩 읽어온다.
3. 파이썬이 폴더를 돌면서 'Before' 이름의 파일을 찾아 'After' 이름으로 변경한다.
2. 준비물: 변경 목록 CSV 파일 만들기 📊
가장 먼저 할 일은 파일명 변경 목록을 만드는 것입니다. 엑셀이나 구글 시트를 열고, 아래와 같이 2개의 열(Column)을 만들어 주세요.
- **A열 (before):** 현재 파일 이름 (확장자 포함)
- **B열 (after):** 새로 바꿀 파일 이름 (확장자 포함)
예를 들어, `image_001.jpg`를 `서울풍경.jpg`로, `report_v1.docx`를 `2025년_업무보고서.docx`로 바꾸고 싶다면 아래 표와 같이 작성하면 됩니다.
파일명 변경 목록 예시 (list.csv)
| before | after |
|---|---|
| image_001.jpg | 서울풍경.jpg |
| image_002.jpg | 부산야경.jpg |
| report_v1.docx | 2025년_업무보고서.docx |
| temp_003.txt | 삭제예정_메모.txt |
작성이 완료되면, 이 파일을 **'CSV (쉼표로 분리)'** 형식으로 저장합니다. 이때 파일 이름은 `list.csv`로 저장해 주세요.
CSV 파일 저장 시 **'UTF-8' 인코딩**으로 저장하는 것이 중요합니다. 특히 한글 파일명이 깨지는 현상을 방지할 수 있습니다. 엑셀에서 '다른 이름으로 저장' > '파일 형식' > 'CSV UTF-8'을 선택하세요.
3. 파이썬 스크립트 작성하기 🧮
이제 본격적으로 파이썬 코드를 작성해 보겠습니다. 코드가 조금 길어 보일 수 있지만, 각 부분이 어떤 역할을 하는지 주석을 달아두었으니 천천히 살펴보세요.
📝 전체 파이썬 코드 (rename_files.py)
# 1. 필요한 모듈 가져오기
import os
import csv
# 2. 파일명 변경을 실행할 폴더 경로
FOLDER_PATH = r"C:\MyAssignment" # 👈 여러분의 폴더 경로로 수정하세요 (앞에 r을 붙이면 편해요)
# 3. CSV 파일 경로
CSV_FILE_PATH = "list.csv" # 👈 CSV 파일 이름 (같은 폴더에 있다면 이름만)
# 4. 파일명 변경 함수 실행
def rename_files():
try:
# CSV 파일 열기 (한글 깨짐 방지: encoding='utf-8-sig')
with open(CSV_FILE_PATH, 'r', encoding='utf-8-sig') as f:
reader = csv.reader(f)
# (선택) CSV 파일에 헤더(제목 줄)가 있다면 건너뛰기
# next(reader)
# CSV 파일을 한 줄씩 읽으면서 반복
for row in reader:
if len(row) >= 2: # 행에 최소 2개 열이 있는지 확인
old_name = row[0].strip() # 0번째 열 (before)
new_name = row[1].strip() # 1번째 열 (after)
# 파일 경로 조합 (폴더 경로 + 옛날 파일명)
old_file_path = os.path.join(FOLDER_PATH, old_name)
# 파일 경로 조합 (폴더 경로 + 새 파일명)
new_file_path = os.path.join(FOLDER_PATH, new_name)
# 5. 파일이 실제로 존재하는지 확인
if os.path.exists(old_file_path):
# 6. 파일명 변경 실행!
os.rename(old_file_path, new_file_path)
print(f"성공: '{old_name}' -> '{new_name}'")
else:
print(f"실패: '{old_name}' 파일을 찾을 수 없습니다.")
except FileNotFoundError:
print(f"오류: CSV 파일('{CSV_FILE_PATH}')을 찾을 수 없습니다.")
except Exception as e:
print(f"알 수 없는 오류 발생: {e}")
# 스크립트 실행
if __name__ == "__main__":
print("--- 파일명 일괄 변경 작업을 시작합니다 ---")
rename_files()
print("--- 작업 완료 ---")
이 코드를 `rename_files.py`라는 이름으로 저장하세요. 그리고 이 파이썬 파일(`rename_files.py`)과 아까 만든 `list.csv` 파일을 **같은 폴더**에 넣거나, 코드 상단의 `FOLDER_PATH`와 `CSV_FILE_PATH`를 정확하게 수정해 주시면 됩니다.
파일명을 변경하는 스크립트는 **매우 강력하고 위험할 수 있습니다.** 한 번 잘못 실행하면 모든 파일명을 되돌리기 어렵습니다.
1. **반드시 원본 파일들은 백업(복사)해 두세요.**
2. 스크립트를 실행하기 전에, **먼저 테스트용 폴더를 따로 만들어서** 복사본 파일들로 테스트를 꼭 진행해 보세요.
뤼튼 AI를 이용할 경우 아래와 같이 작성후 [자동완성]을 클릭하면 과제답변 창에서 파이썬 코드가 완성됩니다.
- 뤼튼 > 도구 > 코딩 과제 > Python
- 코딩과제입력 :
파이썬 폴더 하부에 폴더4개가 있고, 하부폴더에는 이미지 파일들이 있어. 아래와 같이 <CSV>을 읽어서 폴더안에 있는 파일명_원본을 파일명_수정본으로 변경하는 코드를 생성해줘.
<폴더명>
A001, A002, B1001, B203, C012,
<CSV>
폴더명, 파일명_원본,파일명_수정본
폴더명, 파일명_원본,파일명_수정본
폴더명, 파일명_원본,파일명_수정본
폴더명, 파일명_원본,파일명_수정본

<Python 코드>
#!/usr/bin/env python3
import os
import csv
import sys
def rename_files_from_csv(csv_file, base_folder):
"""
CSV 파일의 지침에 따라 하위 폴더 내 파일 이름을 변경하는 함수입니다.
매개변수:
csv_file (str): '폴더명', '파일명_원본', '파일명_수정본' 열을 가진 CSV 파일의 경로.
base_folder (str): 하위 폴더들이 위치한 상위 폴더의 경로.
"""
# CSV 파일 존재 여부 확인
if not os.path.exists(csv_file):
sys.exit(f"Error: CSV 파일 '{csv_file}'을(를) 찾을 수 없습니다.")
# CSV 파일 읽기 (UTF-8 인코딩 처리)
with open(csv_file, newline='', encoding='utf-8-sig') as f:
reader = csv.DictReader(f)
for row in reader:
folder_name = row.get("폴더명")
original_file = row.get("파일명_원본")
modified_file = row.get("파일명_수정본")
# CSV 행에 필요한 데이터가 모두 있는지 확인
if not folder_name or not original_file or not modified_file:
print("Warning: 행에 데이터 누락 발생. 건너뜁니다:", row)
continue
# 하위 폴더의 전체 경로 구성
folder_path = os.path.join(base_folder, folder_name)
if not os.path.isdir(folder_path):
print(f"Warning: 폴더 '{folder_path}'이(가) 존재하지 않습니다. 해당 행을 건너뜁니다: {row}")
continue
# 원본 파일과 수정 파일의 전체 경로 구성
original_path = os.path.join(folder_path, original_file)
new_path = os.path.join(folder_path, modified_file)
if not os.path.exists(original_path):
print(f"Warning: 원본 파일 '{original_path}'이(가) 존재하지 않습니다. 해당 행을 건너뜁니다: {row}")
continue
try:
# 파일 이름 변경 수행
os.rename(original_path, new_path)
print(f"Renamed: '{original_path}' -> '{new_path}'")
except Exception as e:
print(f"Error: '{original_path}'을(를) '{new_path}'으로 변경하는 중 오류 발생: {e}")
def main():
# 하위 폴더들이 위치한 상위 폴더 경로 지정 (현재 스크립트가 위치한 폴더)
base_folder = os.path.abspath(".")
# CSV 파일 경로 지정 (상위 폴더 내 CSV 파일로 가정)
csv_file = os.path.join(base_folder, "rename_files.csv")
# CSV 파일을 기반으로 파일명 변경 함수 호출
rename_files_from_csv(csv_file, base_folder)
if __name__ == "__main__":
main()
4. 실행 경로 확인 및 실행하기 👩💼👨💻
스크립트를 실행하기 전에, 내가 설정한 경로가 맞는지 확인해 보는 것이 좋습니다. 아래 '예상 실행 경로 확인기'에 여러분이 코드에 입력할 `FOLDER_PATH`와 `CSV_FILE_PATH`를 입력해 보세요.
🔢 예상 실행 경로 확인기
경로 확인이 끝났고, **백업도 완료했다면**, 이제 스크립트를 실행할 차례입니다.
- `rename_files.py`와 `list.csv` 파일이 있는 폴더로 이동합니다. (또는 파이썬 코드의 경로를 정확히 지정합니다.)
- 터미널(CMD, PowerShell 등)을 열고 `python rename_files.py` 명령어를 입력하고 엔터를 칩니다.
- 터미널에 "성공" 또는 "실패" 메시지가 출력되는 것을 확인하고, 실제 폴더에서 파일명이 변경되었는지 확인합니다.
![[파이썬 자동화] CSV 파일로 수백 개 파일명 한 번에 바꾸는 초간단 방법](https://blog.kakaocdn.net/dna/SkchU/dJMcafLHzx0/AAAAAAAAAAAAAAAAAAAAALSY6VfoRLW1zd5OekrWvLCZuoqazuM8EbBtPOEitvxi/img.webp?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=zmN9sLQH24r469QC7vIhG6ZfS50%3D)
마무리: 핵심 내용 요약 📝
오늘은 파이썬과 CSV 파일을 이용해 파일명을 일괄 변경하는 방법을 알아봤습니다. '뤼튼 AI 코딩 과제'뿐만 아니라, 컴퓨터로 하는 거의 모든 반복 작업은 파이썬으로 자동화할 수 있습니다.
오늘 배운 `os` 모듈과 `csv` 모듈은 파일 처리 자동화의 핵심이니 꼭 기억해두세요!
파이썬 파일명 변경 핵심 요약
자주 묻는 질문 ❓
이해가 잘 되셨나요? 오늘 배운 내용으로 여러분의 '뤼튼 AI 코딩 과제'나 일상 업무가 조금 더 편해졌으면 좋겠습니다. 혹시 코드가 작동하지 않거나 궁금한 점이 있다면 언제든 댓글로 물어봐주세요~ 😊
함께 하면 좋은 글
2025.09.19 - [분류 전체보기] - 미니보조배터리 기내반입 해외여행용 와피크 PD 사용후기
미니보조배터리 기내반입 해외여행용 와피크 PD 사용후기
최근 2주간 해외출장을 가게 되었습니다. 장기출장 시 가장 걱정되는 것 중 하나가 바로 핸드폰의 배터리 문제입니다. 특히 비행기 탑승 시 보조배터리 규제가 강화되면서 어떤 제품을 선택해야
relax-life-go.com
2025.03.06 - [분류 전체보기] - 2025년 초등학생 일주일 용돈 얼마가 적당할까 : 적정 금액, 지급방식, 저축습관
2025년 초등학생 일주일 용돈 얼마가 적당할까 : 적정 금액, 지급방식, 저축습관
"우리 아이에게 용돈을 얼마나 줘야 할까?" 고민하는 부모님들 많으시죠? 2025년 기준, 초등학생 용돈 적정 금액과 올바른 경제 교육법을 알려드립니다! 안녕하세요, 여러분! 아이들에게 용돈
relax-life-go.com
2025.06.19 - [분류 전체보기] - 스마트폰 금욕상자(핸드폰 잠금상자) 하나로 디지털 디톡스 완벽 성공!
스마트폰 금욕상자(핸드폰 잠금상자) 하나로 디지털 디톡스 완벽 성공!
스마트폰 중독으로 힘들었던 제가 '스마트폰 금욕상자'로 디지털 디톡스에 성공하며 인생이 긍정적으로 변한 경험담을 공유합니다. 금욕상자의 필요성, 종류별 비교, 그리고 기상 후/집중 시간/
relax-life-go.com
나이와 지역을 선택하여 받을 수 있는 정부지원금 확인하세요~
AI 최신 지원금 - 정부지원금 찾기
나이와 지역을 선택하여 받을 수 있는 정부지원금을 쉽게 찾아보세요. 최신 정부지원금 정보를 실시간으로 제공합니다.
gg01.relax-life-go.com
댓글