все Python 3shutilфункция
shutil.copyfile()
копирование файлов
Копирует только содержимое файла по пути src в файл dst — без прав, времени изменения и других метаданных.
Синтаксис
shutil.copyfile(src, dst, *, follow_symlinks=True) -> dst
Самая «голая» из функций копирования: copyfile — только данные, copymode — только биты прав, copystat — права и время без данных, copy = copyfile + copymode, copy2 = copyfile + copystat. dst обязан быть путём к файлу: каталог в dst даёт IsADirectoryError (на Windows — PermissionError), тогда как copy() и copy2() положили бы файл внутрь. Существующий dst молча перезаписывается, а копирование файла самого в себя даёт SameFileError.
Примеры
import os, shutil
with open('a.txt', 'w') as f:
f.write('data')
os.chmod('a.txt', 0o600)
print(shutil.copyfile('a.txt', 'b.txt')) # → b.txt
print(open('b.txt').read()) # → data
print(oct(os.stat('b.txt').st_mode & 0o777)) # → ? 0o644 — права по umask, не 0o600
import os, shutil
os.mkdir('folder')
open('a.txt', 'w').close()
try:
shutil.copyfile('a.txt', 'folder')
except IsADirectoryError as e:
print(type(e).__name__) # → IsADirectoryError
try:
shutil.copyfile('a.txt', 'a.txt')
except shutil.SameFileError as e:
print(e) # → 'a.txt' and 'a.txt' are the same file
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности