파이썬에서 파일을 어떻게 복사합니까?
에서 찾을 수 없습니다 os
.
답변
shutil
사용할 수있는 방법이 많이 있습니다. 그 중 하나는 다음과 같습니다.
from shutil import copyfile
copyfile(src, dst)
- src 파일의 내용을 dst 파일로 복사하십시오 .
- 대상 위치는 쓰기 가능해야합니다. 그렇지 않으면 IOError 예외가 발생합니다.
- 경우 DST가 이미 존재, 그것은 대체됩니다.
- 문자 또는 블록 장치 및 파이프와 같은 특수 파일은이 기능으로 복사 할 수 없습니다.
- 으로 복사 , SRC 및 DST 로 주어진 경로 이름입니다 문자열 .
당신이 사용하는 경우 os.path
작업을 사용 copy
하기보다는 copyfile
. copyfile
것입니다 만 문자열을 받아 들일 .
답변
┌──────────────────┬────────┬───────────┬───────┬────────────────┐
│ Function │ Copies │ Copies │Can use│ Destination │
│ │metadata│permissions│buffer │may be directory│
├──────────────────┼────────┼───────────┼───────┼────────────────┤
│shutil.copy │ No │ Yes │ No │ Yes │
│shutil.copyfile │ No │ No │ No │ No │
│shutil.copy2 │ Yes │ Yes │ No │ Yes │
│shutil.copyfileobj│ No │ No │ Yes │ No │
└──────────────────┴────────┴───────────┴───────┴────────────────┘
답변
copy2(src,dst)
종종 다음보다 더 유용합니다 copyfile(src,dst)
.
- 그것은 수
dst
될 디렉토리 (대신의 전체 대상 파일 이름을)하는 경우에는 기본 이름 의src
새 파일을 만드는 데 사용됩니다; - 파일 메타 데이터의 원래 수정 및 액세스 정보 (mtime 및 atime)를 유지하지만 약간의 오버 헤드가 발생합니다.
다음은 간단한 예입니다.
import shutil
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given
shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext
답변
shutil
패키지 에서 복사 기능 중 하나를 사용할 수 있습니다 .
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 유지 기능은 다른 사본을 허용합니다. 권한 디렉토리 대상. 파일 obj 메타 데이터 ―――――――――――――――――――――――――――――――――――――――――――――――――――――― ―――――――――――――――――――――――――――――― shutil.copy ✔ ✔ ☐ ☐ shutil.copy2 ✔ ✔ ☐ ✔ shutil.copyfile ☐ ☐ ☐ ☐ shutil.copyfileobj ☐ ☐ ✔ ☐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
예:
import shutil
shutil.copy('/etc/hostname', '/var/tmp/testhostname')
답변
파이썬에서는 다음을 사용하여 파일을 복사 할 수 있습니다
shutil
구성 단위os
구성 단위subprocess
구성 단위
import os
import shutil
import subprocess
1) shutil
모듈을 이용한 파일 복사
shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copyfile('source.txt', 'destination.txt')
shutil.copy
서명
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copy('source.txt', 'destination.txt')
shutil.copy2
서명
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
# example
shutil.copy2('source.txt', 'destination.txt')
shutil.copyfileobj(src_file_object, dest_file_object[, length])
# example
file_src = 'source.txt'
f_src = open(file_src, 'rb')
file_dest = 'destination.txt'
f_dest = open(file_dest, 'wb')
shutil.copyfileobj(f_src, f_dest)
2) os
모듈을 이용한 파일 복사
os.popen
서명
os.popen(cmd[, mode[, bufsize]])
# example
# In Unix/Linux
os.popen('cp source.txt destination.txt')
# In Windows
os.popen('copy source.txt destination.txt')
os.system
서명
os.system(command)
# In Linux/Unix
os.system('cp source.txt destination.txt')
# In Windows
os.system('copy source.txt destination.txt')
3) subprocess
모듈을 이용한 파일 복사
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.call('cp source.txt destination.txt', shell=True)
# In Windows
status = subprocess.call('copy source.txt destination.txt', shell=True)
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.check_output('cp source.txt destination.txt', shell=True)
# In Windows
status = subprocess.check_output('copy source.txt destination.txt', shell=True)
답변
파일 복사는 아래 예제와 같이 비교적 간단한 작업이지만 대신 shutil stdlib 모듈 을 사용해야합니다.
def copyfileobj_example(source, dest, buffer_size=1024*1024):
"""
Copy a file from source to dest. source and dest
must be file-like objects, i.e. any object with a read or
write method, like for example StringIO.
"""
while True:
copy_buffer = source.read(buffer_size)
if not copy_buffer:
break
dest.write(copy_buffer)
파일 이름으로 복사하려면 다음과 같이하십시오.
def copyfile_example(source, dest):
# Beware, this example does not handle any edge cases!
with open(source, 'rb') as src, open(dest, 'wb') as dst:
copyfileobj_example(src, dst)
답변
shutil 모듈을 사용하십시오 .
copyfile(src, dst)
src라는 파일의 내용을 dst라는 파일로 복사하십시오. 대상 위치는 쓰기 가능해야합니다. 그렇지 않으면 IOError 예외가 발생합니다. dst가 이미 존재하면 교체됩니다. 문자 또는 블록 장치 및 파이프와 같은 특수 파일은이 기능으로 복사 할 수 없습니다. src 및 dst는 문자열로 지정된 경로 이름입니다.
표준 Python 모듈에서 사용 가능한 모든 파일 및 디렉토리 처리 기능에 대해서는 filesys 를 살펴보십시오 .