Python Glossary English

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