class io.IOBase
The abstract base class for all I/O classes, acting on streams of bytes. There is no public constructor.
This class provides empty abstract implementations for many methods that derived classes can override selectively; the default implementations represent a file that cannot be read, written or seeked.
Even though IOBase
does not declare read()
, readinto()
, or write()
because their signatures will vary, implementations and clients should consider those methods part of the interface. Also, implementations may raise a ValueError
(or UnsupportedOperation
) when operations they do not support are called.
The basic type used for binary data read from or written to a file is bytes
. Other bytes-like objects are accepted as method arguments too. In some cases, such as readinto()
, a writable object such as bytearray
is required. Text I/O classes work with str
data.
Note that calling any method (even inquiries) on a closed stream is undefined. Implementations may raise ValueError
in this case.
IOBase
(and its subclasses) supports the iterator protocol, meaning that an IOBase
object can be iterated over yielding the lines in a stream. Lines are defined slightly differently depending on whether the stream is a binary stream (yielding bytes), or a text stream (yielding character strings). See readline()
below.
IOBase
is also a context manager and therefore supports the with
statement. In this example, file is closed after the with
statement’s suite is finished—even if an exception occurs:
with open('spam.txt', 'w') as file: file.write('Spam and eggs!')
IOBase
provides these data attributes and methods:
-
close()
-
Flush and close this stream. This method has no effect if the file is already closed. Once the file is closed, any operation on the file (e.g. reading or writing) will raise a
ValueError
.As a convenience, it is allowed to call this method more than once; only the first call, however, will have an effect.
-
closed
-
True
if the stream is closed.
-
fileno()
-
Return the underlying file descriptor (an integer) of the stream if it exists. An
OSError
is raised if the IO object does not use a file descriptor.
-
flush()
-
Flush the write buffers of the stream if applicable. This does nothing for read-only and non-blocking streams.
-
isatty()
-
Return
True
if the stream is interactive (i.e., connected to a terminal/tty device).
-
readable()
-
Return
True
if the stream can be read from. IfFalse
,read()
will raiseOSError
.
-
readline(size=-1)
-
Read and return one line from the stream. If size is specified, at most size bytes will be read.
The line terminator is always
b'\n'
for binary files; for text files, the newline argument toopen()
can be used to select the line terminator(s) recognized.
-
readlines(hint=-1)
-
Read and return a list of lines from the stream. hint can be specified to control the number of lines read: no more lines will be read if the total size (in bytes/characters) of all lines so far exceeds hint.
Note that it’s already possible to iterate on file objects using
for line in file: ...
without callingfile.readlines()
.
-
seek(offset[, whence])
-
Change the stream position to the given byte offset. offset is interpreted relative to the position indicated by whence. The default value for whence is
SEEK_SET
. Values for whence are:-
SEEK_SET
or0
– start of the stream (the default); offset should be zero or positive -
SEEK_CUR
or1
– current stream position; offset may be negative -
SEEK_END
or2
– end of the stream; offset is usually negative
Return the new absolute position.
New in version 3.1: The
SEEK_*
constants.New in version 3.3: Some operating systems could support additional values, like
os.SEEK_HOLE
oros.SEEK_DATA
. The valid values for a file could depend on it being open in text or binary mode. -
-
seekable()
-
Return
True
if the stream supports random access. IfFalse
,seek()
,tell()
andtruncate()
will raiseOSError
.
-
tell()
-
Return the current stream position.
-
truncate(size=None)
-
Resize the stream to the given size in bytes (or the current position if size is not specified). The current stream position isn’t changed. This resizing can extend or reduce the current file size. In case of extension, the contents of the new file area depend on the platform (on most systems, additional bytes are zero-filled). The new file size is returned.
Changed in version 3.5: Windows will now zero-fill files when extending.
-
writable()
-
Return
True
if the stream supports writing. IfFalse
,write()
andtruncate()
will raiseOSError
.
-
writelines(lines)
-
Write a list of lines to the stream. Line separators are not added, so it is usual for each of the lines provided to have a line separator at the end.
-
__del__()
-
Prepare for object destruction.
IOBase
provides a default implementation of this method that calls the instance’sclose()
method.
Please login to continue.