Сообщить об ошибке.

Класс io.BufferedIOBase() модуля io в Python

Базовый класс для двоичных потоков, поддерживающих буферизацию

Синтаксис:

import io

fp = io.BufferedIOBase()

Описание:

Базовый класс io.BufferedIOBase предназначен для двоичных потоков, которые поддерживают некоторую буферизацию. Класс io.BufferedIOBase наследует абстрактный класс io.IOBase. Не имеет публичного конструктора.

Основное отличие базового класса io.RawIOBase от класса io.BufferedIOBase заключается в том, что методы io.BufferedIOBase, такие как BufferedIOBase.read(), BufferedIOBase.readinto() и BufferedIOBase.write() будут пытаться прочитать столько входных данных, сколько требуется или потреблять все заданные выходные данные за счет выполнения более одного системного вызова.

Кроме того, эти методы могут вызвать исключение io.BlockingIOError, если базовый необработанный поток находится в неблокирующем режиме и не может принимать или давать достаточно данных, в отличие от своих аналогов класса io.RawIOBase, которые никогда не вернут None.

Кроме того, метод BufferedIOBase.read() не имеет реализации по умолчанию, которая откладывает BufferedIOBase.readinto().

Типичная реализация io.BufferedIOBase не должна наследовать от реализации io.RawIOBase, но обернуть ее, как это делают io.BufferedWriter и io.BufferedReader.

Базовый класс io.BufferedIOBase наследует атрибуты и методы из класса io.IOBase, а так же дополнительно предоставляет несколько методов.

Дополнительные методы класса io.BufferedIOBase:

BufferedIOBase.raw:

Метод BufferedIOBase.raw это основной исходный поток - экземпляр io.RawIOBase, с которым имеет дело io.BufferedIOBase. Метод fp.raw не является частью API класса io.BufferedIOBase и может не существовать в некоторых реализациях.

BufferedIOBase.detach():

Метод BufferedIOBase.detach() отделяет исходный поток от буфера и возвращает его. После отделения необработанного потока, буфер находится в непригодном для использования состоянии.

Некоторые буферы, например io.BytesIO, не имеют концепции единственного необработанного потока для возврата его из этого метода. Они поднимают исключение UnsupportedOperation.

BufferedIOBase.read(size=-1):

Метод BufferedIOBase.read() прочитает и вернет до размера size байтов. Если аргумент опущен или отрицателен, данные считываются и возвращаются до достижения EOF. Возвращается пустой bytes объект если поток уже находится в EOF.

Если аргумент положителен, а лежащий в основе необработанный поток не является интерактивным, может быть выдано несколько необработанных считываний для удовлетворения количества байтов (если EOF не достигнут первым). Но для интерактивных необработанных потоков будет выполнено не более одного необработанного чтения и результат меньший size не означает, что это EOF.

Возникает исключение io.BlockingIOError, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.

BufferedIOBase.read1([size]):

Метод BufferedIOBase.read1() читает и возвращает до size байтов, с не более чем одним вызовом метода read() или readinto() основного потока . Это может быть полезно, если вы реализуете свою собственную буферизацию поверх объекта io.BufferedIOBase.

Если size=-1 - по умолчанию, то возвращается произвольное количество байт, обычно больше нуля, если не достигнут EOF.

BufferedIOBase.readinto(b):

Метод BufferedIOBase.readinto() считывает байты в заранее выделенный, доступный для записи байтоподобный объект b и возвращает количество прочитанных байтов. Например b может быть bytearray.

Как и метод read(), в основной необработанный поток может быть выдано несколько операций чтения, если только последний не является интерактивным.

Возникает исключение io.BlockingIOError, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.

BufferedIOBase.readinto1(b):

Метод BufferedIOBase.readinto1() считывает байты в предварительно выделенный, записываемый байтоподобный объект b , используя не более одного вызова метода read() или readinto() базового необработанного потока и возвращает количество прочитанных байтов.

Возникает исключение io.BlockingIOError, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.

BufferedIOBase.write(b):

Метод BufferedIOBase.write() записывает данные байтоподобный объект b и возвращает количество записанных байтов, которое всегда равно длине b в байтах. Если запись не удается поднимается исключение OSError. В зависимости от фактической реализации эти байты могут быть легко записаны в базовый поток или храниться в буфере по соображениям производительности.

В неблокирующем режиме вызывается исключение io.BlockingIOError, если данные необходимо было записать в необработанный поток, но он не может принять все данные без блокировки.

Вызывающая сторона может очистить или изменить объект b после возврата этого метода, поэтому реализация должна иметь доступ только к объекту b во время вызова метода.