import io fp = io.BytesIO([initial_bytes])
Класс io.BytesIO()
реализация потока, использующая буфер байтов в памяти. Класс io.BytesIO
наследует io.BufferedIOBase
. Буфер отбрасывается при вызове метода close()
.
Необязательный аргумент initial_bytes
является байтовоподобным объектом, который содержит исходные данные.
Класс io.BytesIO
наследует атрибуты и методы от классов io.BufferedIOBase
и io.IOBase
, а так же дополнительно предоставляет несколько методов.
Смотрите пример использования.
io.BytesIO
:BytesIO.getbuffer()
:Метод BytesIO.getbuffer()
возвращает доступное для чтения и записи представление содержимого буфера без его копирования. Кроме того, изменение представления прозрачно обновит содержимое буфера::
>>> import io >>> b = io.BytesIO(b"abcdef") >>> view = b.getbuffer() >>> view[2:4] = b"56" >>> b.getvalue() # b'ab56ef'
Заметка пока существует представление, объект BytesIO
не может быть изменен или закрыт.
BytesIO.getvalue()
:Метод BytesIO.getvalue()
возвращает bytes
, содержащие все содержимое буфера.
BytesIO.read1([size])
:Метод BytesIO.read1()
прочитает и вернет до размера size
байтов. Если аргумент опущен или отрицателен, данные считываются и возвращаются до достижения EOF. Возвращается пустой bytes объект если поток уже находится в EOF.
Если аргумент положителен, а лежащий в основе необработанный поток не является интерактивным, может быть выдано несколько необработанных считываний для удовлетворения количества байтов (если EOF не достигнут первым). Но для интерактивных необработанных потоков будет выполнено не более одного необработанного чтения и результат меньший size
не означает, что это EOF.
Возникает исключение io.BlockingIOError
, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.
BytesIO.readinto1(b)
:Метод BytesIO.readinto1()
считывает байты в заранее выделенный, доступный для записи байтоподобный объект b
и возвращает количество прочитанных байтов. Например b
может быть bytearray
.
Как и метод read()
, в основной необработанный поток может быть выдано несколько операций чтения, если только последний не является интерактивным.
Возникает исключение io.BlockingIOError
, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.