Python에서 파일을 복사하는 방법
-
Python에서 파일을 복사하는 Shutil
copyfile()
메서드 -
Shutil
copy()
메서드를 사용하여 권한으로 파일 복사 -
copy()
와copyfile()
메서드 비교 -
copyfileobj()
파일 객체 복사 방법 -
메타 데이터를 보존하는
copy2()
메서드 - 파이썬에서 파일을 복사하는 방법의 결론
Python은 파일 I/O 작업 (예 :OS
,subprocess
및shutil
)을 지원하기 위해 기본 제공되는 여러 모듈과 함께 제공됩니다. shutil
모듈을 사용하여 파일과 디렉토리를 복사하기 만하면됩니다. 이 유틸리티 기능을 사용하여 파일 및 디렉토리의 복제, 전송 또는 삭제와 같은 작업을 완료합니다. 여기에서는 네 가지 방법을 다음과 같이 설명합니다.
Python에서 파일을 복사하는 Shutil copyfile()
메서드
소스 자료를 대상 이름이 지정된 파일로 복사합니다. 대상이 쓰기 가능하지 않으면 복사 프로세스에서IOError
예외가 발생합니다. 원본 파일과 대상 파일이 같으면SameFileError
가 반환됩니다. 소스 및 대상의 경로 이름은 문자열로 제공됩니다.
copyfile(source_file, destination_file)
문자 또는 블록 장치와 파이프는이 방법에서 지원되지 않습니다.
import shutil
source = r"C:\Users\DelftStack\Documents\test\test.txt"
destination = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copyfile(source, destination)
Shutil copy()
메서드를 사용하여 권한으로 파일 복사
copy()
메소드는 Unix 명령어cp
처럼 작동합니다. 컨텐츠를 복사 할 때이 메소드는 대상 파일의 권한을 소스 파일과 동기화합니다. 동일한 파일을 복사하는 경우 SameFileError
도 발생합니다. 구문은 다음과 같습니다.
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
권한이있는 파일을 복사하는 Shutil copy()
메서드의 예
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy(src, des)
copy()
와copyfile()
메서드 비교
copy()
메서드는 내용이 복사 될 때 파일 권한을 설정하는 반면copyfile()
은 데이터 만 복사합니다.- 기본적으로 구현시
copyfile()
메서드는copyfileobj()
메서드를 사용합니다. 이에 비해copy()
메서드는copyfile()
및copymode()
함수를 사용합니다. - 위의 요점은
copyfile()
이copy()
보다 약간 더 빠르다는 것을 분명하게합니다. 왜냐하면 후자 (권한 보존)에 추가 작업이 있기 때문입니다.
copyfileobj()
파일 객체 복사 방법
이 함수는 파일을 대상 경로 또는 파일의 개체에 복사합니다. 대상 객체가 파일 객체이면copyfileobj()
를 직접 호출 한 후 닫아야합니다. 버퍼 크기는 버퍼의 길이를 지정하는 데 사용됩니다. 복사하는 동안 메모리에 보유 된 바이트 수입니다.
copyfileobj()
메소드의 구문은 다음과 같습니다.
shutil.copyfileobj(src_file_object, dest_file_object[, length])
import shutil
filename1 = r"C:\Users\DelftStack\Documents\test\test.txt"
fileA = open(filename1, "rb")
filename2 = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
fileB = open(filename2, "wb")
shutil.copyfileobj(fileA, fileB)
메타 데이터를 보존하는copy2()
메서드
copy2()
메서드는copy()
메서드와 비슷하지만 파일 내용을 복사하는 것 외에도 소스 파일의 모든 메타 데이터를 보존합니다.
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy2(src, des)
파이썬에서 파일을 복사하는 방법의 결론
결국 모든 메소드에 대한 테이블이 첨부되어shutil
유틸리티를 더 잘 이해하는 데 도움이됩니다.
함수 | 메타 데이터 복사 | 권한 복사 | 버퍼 사용 가능 | 목적지는 디렉토리 일 수 있습니다. |
---|---|---|---|---|
shutil.copy |
아니 | 예 | 아니 | 예 |
shutil.copyfile |
아니 | 아니 | 아니 | 아니 |
shutil.copy2 |
예 | 예 | 아니 | 예 |
shutil.copyfileobj |
아니 | 아니 | 예 | 아니 |