Python Glossary English

все Python 3shutilфункция

shutil.copyfileobj()

копирование файлов

Копирует данные из одного открытого файлового объекта в другой кусками — без загрузки всего файла в память.

Синтаксис

shutil.copyfileobj(fsrc, fdst[, length])

Работает с объектами, а не с путями: открыть файлы (оба в двоичном или оба в текстовом режиме) и закрыть их — ваша забота. Копирование идёт с текущей позиции источника: если файл уже прочитан или в BytesIO только что записали данные, скопируется пустота — сначала нужен seek(0). Права, время изменения и прочие метаданные не переносятся вовсе: у объекта их нет.

Примеры

import io, shutil
src = io.BytesIO()
src.write(b'hello')
dst = io.BytesIO()
shutil.copyfileobj(src, dst)
print(dst.getvalue())  # → b'' — позиция src стояла в конце
src.seek(0)
shutil.copyfileobj(src, dst)
print(dst.getvalue())  # → b'hello'
import shutil
with open('a.txt', 'w', encoding='utf-8') as f:
    f.write('строка\n' * 3)
with open('a.txt', 'rb') as fsrc, open('b.txt', 'wb') as fdst:
    shutil.copyfileobj(fsrc, fdst, length=1024)
print(open('b.txt', encoding='utf-8').read().count('строка'))  # → 3

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности