Python에서 파일 하나뿐만 아니라 폴더 전체를 이동해야 할 때는 표준 라이브러리의 shutil 모듈을 사용하는 것이 가장 간단하고 안정적인 방법입니다. 여러 개의 파일을 한 번에 이동하려면 이동할 파일 이름 목록을 만든 뒤, 반복문(loop)을 통해 파일을 하나씩 순서대로 처리하면 됩니다.
shutil.move() 기본 사용법
shutil.move(source, destination)을 호출하면 source 경로에 있는 파일이 destination 경로의 폴더로 이동합니다. 이때 source와 destination은 모두 문자열 형태의 경로여야 합니다.
주목할 점은 destination이 폴더가 아니라 파일 이름인 경우입니다. 이때는 해당 이름이 이동되는 파일의 새로운 이름으로 사용됩니다. 또한 이 함수는 이동이 완료된 파일의 최종 경로를 문자열로 반환하므로, 반환값을 활용하면 이동 결과를 쉽게 확인할 수 있습니다.
여러 파일을 한 번에 이동하는 예제
다음은 세 개의 텍스트 파일을 dest_folder라는 폴더로 한꺼번에 이동하는 기본적인 예제입니다.
import shutil, os
files = ['file1.txt', 'file2.txt', 'file3.txt']
for f in files:
shutil.move(f, 'dest_folder')
실무에서 유용한 팁
- 대상 폴더 미리 생성하기: 이동할 폴더(
dest_folder)가 존재하지 않으면 오류가 발생할 수 있습니다.os.makedirs('dest_folder', exist_ok=True)를 먼저 실행해 두면 안전합니다. - 경로 결합하기:
os.path.join()을 사용하면 운영체제에 관계없이 올바른 경로를 만들 수 있어 Windows와 macOS/Linux 모두에서 코드가 안정적으로 동작합니다. - 파일 이름 충돌 주의: 대상 폴더에 같은 이름의 파일이 이미 있다면 기존 파일이 덮어써질 수 있으므로, 필요하다면 사전에 존재 여부를 확인하는 것이 좋습니다.
이러한 내용을 반영해 조금 더 견고하게 작성한 예제는 다음과 같습니다.
import shutil, os
dest_folder = 'dest_folder'
os.makedirs(dest_folder, exist_ok=True)
files = ['file1.txt', 'file2.txt', 'file3.txt']
for f in files:
if os.path.exists(f):
moved_path = shutil.move(f, os.path.join(dest_folder, f))
print(f'{f} → {moved_path} 이동 완료')
else:
print(f'{f} 파일을 찾을 수 없습니다.')
이처럼 shutil.move()와 os 모듈을 함께 활용하면 단일 파일은 물론 대량의 파일도 몇 줄의 코드로 손쉽게 이동할 수 있습니다.