class io.BufferedIOBase
Base class for binary streams that support some kind of buffering. It inherits IOBase
. There is no public constructor.
The main difference with RawIOBase
is that methods read()
, readinto()
and write()
will try (respectively) to read as much input as requested or to consume all given output, at the expense of making perhaps more than one system call.
In addition, those methods can raise BlockingIOError
if the underlying raw stream is in non-blocking mode and cannot take or give enough data; unlike their RawIOBase
counterparts, they will never return None
.
Besides, the read()
method does not have a default implementation that defers to readinto()
.
A typical BufferedIOBase
implementation should not inherit from a RawIOBase
implementation, but wrap one, like BufferedWriter
and BufferedReader
do.
BufferedIOBase
provides or overrides these methods and attribute in addition to those from IOBase
:
-
raw
-
The underlying raw stream (a
RawIOBase
instance) thatBufferedIOBase
deals with. This is not part of theBufferedIOBase
API and may not exist on some implementations.
-
detach()
-
Separate the underlying raw stream from the buffer and return it.
After the raw stream has been detached, the buffer is in an unusable state.
Some buffers, like
BytesIO
, do not have the concept of a single raw stream to return from this method. They raiseUnsupportedOperation
.New in version 3.1.
-
read(size=-1)
-
Read and return up to size bytes. If the argument is omitted,
None
, or negative, data is read and returned until EOF is reached. An emptybytes
object is returned if the stream is already at EOF.If the argument is positive, and the underlying raw stream is not interactive, multiple raw reads may be issued to satisfy the byte count (unless EOF is reached first). But for interactive raw streams, at most one raw read will be issued, and a short result does not imply that EOF is imminent.
A
BlockingIOError
is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment.
-
read1(size=-1)
-
Read and return up to size bytes, with at most one call to the underlying raw stream’s
read()
(orreadinto()
) method. This can be useful if you are implementing your own buffering on top of aBufferedIOBase
object.
-
readinto(b)
-
Read bytes into a pre-allocated, writable bytes-like object b and return the number of bytes read.
Like
read()
, multiple reads may be issued to the underlying raw stream, unless the latter is interactive.A
BlockingIOError
is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment.
-
readinto1(b)
-
Read bytes into a pre-allocated, writable bytes-like object b, using at most one call to the underlying raw stream’s
read()
(orreadinto()
) method. Return the number of bytes read.A
BlockingIOError
is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment.New in version 3.5.
-
write(b)
-
Write the given bytes-like object, b, and return the number of bytes written (always equal to the length of b in bytes, since if the write fails an
OSError
will be raised). Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons.When in non-blocking mode, a
BlockingIOError
is raised if the data needed to be written to the raw stream but it couldn’t accept all the data without blocking.The caller may release or mutate b after this method returns, so the implementation should only access b during the method call.
Please login to continue.