파이썬에서 여러 개의 파일 이름을 한 번에 변경해야 하는 경우가 종종 있습니다. 예를 들어 이미지 파일 일괄 정리, 확장자 변경, 접두사 추가 등 다양한 작업에서 유용하게 활용할 수 있습니다. 이름을 변경하려는 파일 목록과 그에 대응하는 새 파일 이름이 준비되어 있다면, 표준 라이브러리만으로도 간단하게 처리할 수 있습니다.
1. os 모듈의 rename() 사용하기
가장 기본적인 방법은 os 모듈의 rename() 메서드를 사용하는 것입니다. 이 함수는 첫 번째 인자(기존 경로)의 파일이나 폴더 이름을 두 번째 인자(새 경로)로 변경합니다.
예제 코드
import os
files = {
'old_name1.txt': 'new_name1.txt',
'old_name2.txt': 'new_name2.txt'
}
for old, new in files.items(): # 파이썬 2에서는 files.iteritems()
os.rename(old, new)
딕셔너리의 items() 메서드를 사용하면 기존 파일 이름과 새 파일 이름 쌍을 순회하며 차례대로 변경할 수 있습니다. 참고로 파이썬 2에서는 iteritems()를 사용했지만, 파이썬 3부터는 items()로 통일되었습니다.
2. shutil 모듈의 move() 사용하기
shutil(셸 유틸리티) 모듈을 사용할 수도 있습니다. shutil.move(source, destination)를 호출하면 source 경로에 있는 파일이나 폴더를 destination 경로로 이동시키며, 이 과정에서 이름이 달라질 경우 자연스럽게 이름 변경 효과를 얻을 수 있습니다. 또한 이 함수는 새 위치의 절대 경로를 문자열로 반환하므로, 이동 결과를 확인하기에도 편리합니다.
예제 코드
import shutil
for old, new in files.items(): # 파이썬 2에서는 files.iteritems()
shutil.move(old, new)
어떤 방법을 선택해야 할까?
단순히 같은 디렉토리 안에서 이름만 변경한다면 os.rename()이 가장 직관적입니다. 반면 파일을 다른 폴더로 이동하면서 동시에 이름을 바꿔야 한다거나, 드라이브 간 이동이 필요하다면 shutil.move()가 더 적합합니다.
추가로 파이썬 3.4 이상에서는 객체 지향 방식의 pathlib.Path.rename()도 사용할 수 있어, 경로 처리를 더욱 깔끔하게 작성할 수 있습니다.