Python Glossary English

все Python 3ioпонятие

io.BytesIO

байты

Файлоподобный объект для бинарных данных в памяти. Аналог StringIO для байтов.

Синтаксис

io.BytesIO(initial_bytes=b'')

Классическая ловушка: после write() позиция стоит в конце буфера, поэтому read() вернёт пустые b'' — нужен либо seek(0), либо getvalue(), который отдаёт весь буфер независимо от текущей позиции. Основной сценарий — когда библиотека требует файловый объект, а данные хочется держать в памяти: собрать zip-архив или картинку, ничего не записывая на диск. После close() буфер освобождается, и getvalue() уже бросает ValueError, так что забирать данные надо до закрытия.

Примеры

import io
buf = io.BytesIO()
buf.write(b'\x00\x01\x02')
buf.getvalue() # → b'\x00\x01\x02'
buf.seek(0)
buf.read(1) # → b'\x00'
b = io.BytesIO(b'data')
b.read() # → b'data'
len(io.BytesIO(b'abc').getvalue()) # → 3

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности