Python 3.3+Linux · macOSosфункция
os.readv
os — позиционный ввод-вывод
Читает из дескриптора сразу в несколько буферов (scatter read). Доступно на Unix.
Синтаксис
os.readv(...)
Заполняет переданные изменяемые буферы по порядку — например, bytearray для заголовка фиксированной длины и второй для тела — и возвращает общее число прочитанных байт. Буферы не пересоздаются, поэтому лишних копий нет. Если данных меньше, чем места, последние буферы остаются недозаполненными.
Примеры
import os
fd = os.open('readv-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.readv(fd, bufs), bytes(bufs[0]), bytes(bufs[1])) # → ? только Unix: 10 b'HEADER' b'BODY'
print(os.readv(fd, [bytearray(4)])) # → 0 — данные кончились: readv читает с текущей позиции и сдвигает её
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности