import os # Добавлено в Python 3.14 os.readinto(fd, buffer, /)
fd - файловый дескриптор (целое число), полученный через os.open() или os.pipe()buffer - изменяемый (mutable) буферный объект, поддерживающий интерфейс bytes-like (например, bytearray или memoryview)os.readinto():Функция os.readinto() модуля os выполняет низкоуровневое чтение из файлового дескриптора напрямую в предоставленный буфер.
Ключевые особенности:
Размер чтения:
Поведение при ошибках:
try: bytes_read = os.readinto(fd, buf) except OSError as e: print(f"Ошибка чтения: {e}")
Отличие от высокоуровневых аналогов:
# Для файловых объектов используйте: with open('file.txt', 'rb') as f: f.readinto(buffer) # Вместо os.readinto()
Рекомендации:
os.close()Добавлено в Python 3.14
os.readinto():Базовое чтение файла:
import os # Открываем файл и получаем дескриптор fd = os.open('data.bin', os.O_RDONLY) buf = bytearray(1024) # Буфер на 1КБ bytes_read = os.readinto(fd, buf) print(f"Прочитано {bytes_read} байт") os.close(fd)
Чтение из pipe:
r_fd, w_fd = os.pipe() os.write(w_fd, b'test data') buf = bytearray(10) bytes_read = os.readinto(r_fd, buf) print(buf[:bytes_read]) # b'test data' os.close(r_fd) os.close(w_fd)
Контрольное чтение (проверка EOF):
fd = os.open('empty.txt', os.O_RDONLY) buf = bytearray(10) if os.readinto(fd, buf) == 0: print("Файл пуст или достигнут конец") os.close(fd)
| Метод | Использование | Преимущества |
os.readinto() | Низкоуровневые операции с дескрипторами | Минимум аллокаций памяти |
io.readinto() | Работа с файловыми объектами | Буферизация, кодировки |