[파이썬] shutil `shutil.copy()`와 `shutil.copyfile()`의 차이점
shutil
은 Python의 표준 라이브러리 중 하나로, 파일 및 디렉토리 작업을 수행하는 데 사용됩니다. 그 중에서도 shutil.copy()
와 shutil.copyfile()
은 파일 복사에 해당하는 함수입니다. 하지만 두 함수에는 몇 가지 차이점이 있습니다.
1. shutil.copy()
shutil.copy(src, dst, *, follow_symlinks=True)
함수는 원본 파일 및 디렉토리의 내용을 복사하여 지정된 목적지에 새로운 파일 또는 디렉토리로 생성합니다. 다음과 같은 특징을 가지고 있습니다:
- 원본 파일 또는 디렉토리의 메타데이터 (예: 소유자, 권한 등)는 유지됩니다.
- 대상 디렉토리가 존재하지 않으면 새로 생성됩니다.
- 디렉토리가 아닌 파일을 복사할 경우, 대상 경로에 새로운 파일로 생성됩니다.
- 디렉토리를 복사할 경우, 대상 경로에 동일한 디렉토리 구조를 가진 새로운 디렉토리가 생성됩니다.
- 심볼릭 링크는 실제 파일로 복사됩니다 (링크가 아닌 원본 파일이 복사됩니다).
- 기본적으로 심볼릭 링크를 따라 원본 파일을 복사합니다 (옵션으로 변경 가능).
아래는 shutil.copy()
함수의 예제 코드입니다:
import shutil
# 파일 복사
shutil.copy('source.txt', 'destination.txt')
# 디렉토리 복사
shutil.copytree('source_dir', 'destination_dir')
2. shutil.copyfile()
shutil.copyfile(src, dst, *, follow_symlinks=True)
함수는 원본 파일을 새로운 파일로 복사하는 단순한 파일 복사 함수입니다. 다음과 같은 특징을 가지고 있습니다:
- 원본 파일의 내용을 새로운 파일로 복사합니다.
- 대상 경로에 이미 파일이 존재하는 경우, 덮어씁니다.
- 대상 경로에 디렉토리가 존재하면
IsADirectoryError
예외가 발생합니다. - 심볼릭 링크는 심볼릭 링크로 복사됩니다 (링크 자체가 복사됩니다).
아래는 shutil.copyfile()
함수의 예제 코드입니다:
import shutil
# 파일 복사
shutil.copyfile('source.txt', 'destination.txt')
결론
shutil.copy()
와 shutil.copyfile()
함수는 파일 복사 작업을 수행하는 데 사용됩니다. shutil.copy()
는 파일 및 디렉토리를 복사하지만, shutil.copyfile()
은 단순히 파일의 내용을 복사합니다. 적절한 함수를 선택하여 프로그램의 요구에 맞게 사용하면 됩니다.