Python Glossary English

Python 3.8+Linuxosфункция

os.copy_file_range

os — эффективное копирование

Копирует диапазон байтов между файлами в ядре (без прохода через пользовательский буфер; Python 3.8+). Доступно на Linux.

Синтаксис

os.copy_file_range(...)

Копирует данные внутри ядра, а на файловых системах с поддержкой reflink, например Btrfs и XFS, может вовсе не копировать блоки, а сослаться на них. С Python 3.14 shutil.copyfile на Linux использует её сам, когда это возможно. Может скопировать меньше запрошенного — вызывайте в цикле до нулевого результата.

Примеры

import os
src = os.open('copy_src.txt', os.O_RDWR | os.O_CREAT | os.O_TRUNC)   # файл-источник в текущем каталоге
print(os.write(src, b'hello world!'))   # → 12 — записали 12 байт без буферизации Python
dst = os.open('copy_dst.txt', os.O_WRONLY | os.O_CREAT | os.O_TRUNC)   # файл-приёмник в текущем каталоге
print(os.copy_file_range(src, dst, 12, offset_src=0))   # → 12 — ядро скопировало байты, минуя буфер Python
print(os.copy_file_range(src, dst, 12, offset_src=12))   # → 0 — за концом файла копировать нечего

См. также

Частые ошибки

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