Буферизованные потоки ввода/вывода обеспечивают интерфейс более высокого уровня для устройства ввода/вывода, чем необработанный ввод/вывод.
io.BytesIO()
,BytesIO.getbuffer()
,BytesIO.getvalue()
,BytesIO.read1()
,BytesIO.readinto1()
,io.BufferedReader()
,BufferedReader.peek()
,BufferedReader.read()
,BufferedReader.read1()
,io.BufferedWriter()
,BufferedWriter.flush()
,BufferedWriter.write()
,io.BufferedRandom()
,io.BufferedRWPair()
.class 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
, если базовый необработанный поток находится в неблокирующем режиме и в данный момент не имеет доступных данных.
class io.BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
:Класс io.BufferedReader
это буфер, обеспечивающий высокоуровневый доступ к читаемому последовательному объекту io.RawIOBase
. Класс io.BufferedReader
наследует io.BufferedIOBase
. При чтении данных из этого объекта может быть запрошен больший объем данных из базового необработанного потока, который может храниться во внутреннем буфере. Буферизованные данные могут быть затем возвращены непосредственно при последующих чтениях.
Конструктор создает io.BufferedReader
для данного читаемого потока raw
. Если buffer_size
опущен, используется io.DEFAULT_BUFFER_SIZE
.
Класс io.BufferedReader
наследует атрибуты и методы от классов io.BufferedIOBase
и io.IOBase
, а так же дополнительно переопределяет и предоставляет несколько методов.
io.BufferedReader
:BufferedReader.peek([size])
:Метод BufferedReader.peek()
возвращает байты из потока без продвижения позиции. Для удовлетворения вызова выполняется максимум одно чтение необработанного потока. Количество size
возвращаемых байтов может быть меньше или больше запрошенного.
BufferedReader.read([size])
:Метод BufferedReader.read()
читает и возвращает байты размером size
или если размер size
не задан или отрицательный, до тех пор, пока не встретится EOF или если вызов BufferedReader.read()
не заблокируется в неблокирующем режиме.
BufferedReader.read1([size])
:Метод BufferedReader.read1()
читает и возвращает байты до размера size
только с одним вызовом в необработанном потоке. Если буферизован хотя бы один байт, возвращаются только буферизованные байты. В противном случае выполняется один вызов чтения необработанного потока.
class io.BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
:Класс io.BufferedWriter
это буфер, обеспечивающий высокоуровневый доступ к записываемому последовательному объекту io.RawIOBase
. Класс io.BufferedWriter
наследует класс io.BufferedIOBase
. При записи в этот объект данные обычно помещаются во внутренний буфер. Буфер будет записан в базовый io.RawIOBase
объект при различных условиях, включая:
seek()
для объектов io.BufferedRandom
(см. ниже); io.BufferedWriter
закрыт или уничтожен.Конструктор создает io.BufferedWriter
для данного записываемого необработанного потока raw
. Если параметр buffer_size
не указан, по умолчанию используется значение io.DEFAULT_BUFFER_SIZE
.
Класс io.BufferedWriter
наследует атрибуты и методы от классов io.BufferedIOBase
и io.IOBase
, а так же дополнительно переопределяет и предоставляет несколько методов.
io.BufferedWriter
:BufferedWriter.flush()
:Метод BufferedWriter.flush()
принудительно передает байты в необработанный поток raw
, которые удерживаются в буфере. Если необработанный поток блокируется, то возникает исключение BlockingIOError
.
BufferedWriter.write(b)
:Метод BufferedWriter.read1()
записывает байтоподобный объект b
и возвращает количество записанных байтов. В неблокирующем режиме значение поднимается исключение BlockingIOError
, если буфер должен быть записан, но необработанный поток блокируется.
class io.BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
:Класс io.BufferedRandom
это буферизованный интерфейс для потоков произвольного доступа. Наследует классы io.BufferedReader
и io.BufferedWriter
.
Конструктор создает reader
и writer
для поиска необработанного потока raw
, указанного в первом аргументе. Если параметр buffer_size
опущен, по умолчанию используется значение io.DEFAULT_BUFFER_SIZE
.
Класс io.BufferedRandom
может делать все, что могут делать классы io.BufferedReader
и io.BufferedWriter
. Кроме того методы fp.seek()
и fp.tell()
гарантированно будут реализованы.
class io.BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
:Класс io.BufferedRWPair
это буферизованный объект ввода-вывода, объединяющий два однонаправленных io.RawIOBase
объекта - один для чтения, другой для записи - в одну двунаправленную конечную точку. Класс io.BufferedRWPair
наследует io.BufferedIOBase
.
reader
и writer
являются объектами io.RawIOBase
, которые читают и пишут соответственно. Если параметр buffer_size
опущен, по умолчанию используется значение io.DEFAULT_BUFFER_SIZE
.
Класс io.BufferedRWPair
реализует все методы io.BufferedIOBase
, кроме метода detach()
, который вызывает исключение UnsupportedOperation
.
Предупреждение:
Класс io.BufferedRWPair
не пытается синхронизировать доступ к своим базовым необработанным потокам. Вы не должны передавать его таким же объектом, как reader
и writer
, вместо этого используйте io.BufferedRandom
.