Python 3.7+Linuxosфункция
os.preadv
os — позиционный ввод-вывод
Как pread, но читает сразу в несколько буферов (scatter read) с заданной позиции. Доступно на Linux.
Синтаксис
os.preadv(...)
Сочетает pread и readv: читает с заданного смещения сразу в несколько буферов одним системным вызовом. Буферы заполняются по порядку, и последний может остаться частично пустым — смотрите возвращённое число байт. Поддерживает флаги вроде RWF_NOWAIT; это низкоуровневый инструмент для серверов и баз данных, а не для учебных задач.
Примеры
import os
fd = os.open('preadv-demo.bin', os.O_RDWR | os.O_CREAT | os.O_TRUNC) # временный файл для опытов
print(os.pwrite(fd, b'HEADERBODY', 0)) # → 10 — подготовили данные, позиция fd осталась в начале
bufs = [bytearray(6), bytearray(4)] # scatter-чтение: заголовок и тело в разные буферы
print(os.preadv(fd, bufs, 0), bytes(bufs[0]), bytes(bufs[1])) # → ? только Unix: 10 b'HEADER' b'BODY'
print(os.lseek(fd, 0, os.SEEK_CUR)) # → 0 — ни pwrite, ни preadv не сдвинули позицию fd (в отличие от os.readv)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности