Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 한 폴더에서 다른 폴더로 파일 복사하는 방법

shutil 모듈이란?

파이썬에서 파일을 복사하는 가장 간단하고 표준적인 방법은 shutil 모듈을 사용하는 것입니다. shutil 모듈은 개별 파일뿐만 아니라 폴더 전체를 복사할 수 있는 다양한 함수를 기본적으로 제공하기 때문에, 별도의 외부 라이브러리 설치 없이 바로 사용할 수 있습니다.

다만 여러 개의 파일을 한 번에 복사하려면, 복사하고자 하는 파일들의 목록을 미리 만들어 두고 반복문(loop)을 통해 하나씩 복사를 수행해야 합니다.

shutil.copy() 함수의 동작 방식

shutil.copy(source, destination)을 호출하면 source 경로에 있는 파일이 destination 경로의 폴더로 복사됩니다. 이때 sourcedestination은 모두 문자열 형태의 경로여야 합니다.

함수의 주요 특징은 다음과 같습니다.

  • destination이 폴더 경로인 경우: 원본 파일 이름 그대로 해당 폴더 안에 복사됩니다.
  • destination이 파일 이름인 경우: 복사되는 파일의 새로운 이름으로 사용됩니다.
  • 반환값: 복사가 완료된 파일의 경로를 문자열로 반환합니다.

예제 코드

아래 예제는 세 개의 텍스트 파일을 dest_folder라는 대상 폴더로 일괄 복사하는 기본적인 방법을 보여줍니다.

import shutil, os

files = ['file1.txt', 'file2.txt', 'file3.txt']

for f in files:
    shutil.copy(f, 'dest_folder')

추가 팁: 더 유용한 활용 방법

1. 대상 폴더가 없을 경우 자동 생성

복사 대상 폴더가 존재하지 않으면 에러가 발생합니다. 아래처럼 os.makedirs()를 함께 사용하면 안전하게 처리할 수 있습니다.

import shutil, os

os.makedirs('dest_folder', exist_ok=True)

files = ['file1.txt', 'file2.txt', 'file3.txt']
for f in files:
    shutil.copy(f, 'dest_folder')

2. 메타데이터까지 보존하려면 shutil.copy2() 사용

shutil.copy()는 파일 내용과 권한만 복사하지만, shutil.copy2()를 사용하면 생성 시간, 수정 시간 등 파일의 메타데이터까지 그대로 보존하면서 복사할 수 있습니다.

3. 폴더 전체를 통째로 복사하려면 shutil.copytree()

개별 파일이 아니라 디렉터리 구조 전체를 복사해야 한다면 shutil.copytree(source, destination) 함수를 사용하는 것이 가장 효율적입니다.

정리하면, 파이썬에서 파일 복사는 shutil 모듈의 copy() 함수 하나로 손쉽게 처리할 수 있으며, 상황에 따라 copy2(), copytree() 등을 적절히 조합하면 더욱 강력한 파일 관리 자동화가 가능합니다.