Python Glossary English

все 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Сообщить о неточности