Home | History | Annotate | Download | only in library
      1 :mod:`io` --- Core tools for working with streams
      2 =================================================
      3 
      4 .. module:: io
      5    :synopsis: Core tools for working with streams.
      6 
      7 .. moduleauthor:: Guido van Rossum <guido (a] python.org>
      8 .. moduleauthor:: Mike Verdone <mike.verdone (a] gmail.com>
      9 .. moduleauthor:: Mark Russell <mark.russell (a] zen.co.uk>
     10 .. moduleauthor:: Antoine Pitrou <solipsis (a] pitrou.net>
     11 .. moduleauthor:: Amaury Forgeot d'Arc <amauryfa (a] gmail.com>
     12 .. moduleauthor:: Benjamin Peterson <benjamin (a] python.org>
     13 .. sectionauthor:: Benjamin Peterson <benjamin (a] python.org>
     14 
     15 **Source code:** :source:`Lib/io.py`
     16 
     17 --------------
     18 
     19 .. _io-overview:
     20 
     21 Overview
     22 --------
     23 
     24 .. index::
     25    single: file object; io module
     26 
     27 The :mod:`io` module provides Python's main facilities for dealing with various
     28 types of I/O.  There are three main types of I/O: *text I/O*, *binary I/O*
     29 and *raw I/O*.  These are generic categories, and various backing stores can
     30 be used for each of them.  A concrete object belonging to any of these
     31 categories is called a :term:`file object`.  Other common terms are *stream*
     32 and *file-like object*.
     33 
     34 Independent of its category, each concrete stream object will also have
     35 various capabilities: it can be read-only, write-only, or read-write. It can
     36 also allow arbitrary random access (seeking forwards or backwards to any
     37 location), or only sequential access (for example in the case of a socket or
     38 pipe).
     39 
     40 All streams are careful about the type of data you give to them.  For example
     41 giving a :class:`str` object to the ``write()`` method of a binary stream
     42 will raise a :exc:`TypeError`.  So will giving a :class:`bytes` object to the
     43 ``write()`` method of a text stream.
     44 
     45 .. versionchanged:: 3.3
     46    Operations that used to raise :exc:`IOError` now raise :exc:`OSError`, since
     47    :exc:`IOError` is now an alias of :exc:`OSError`.
     48 
     49 
     50 Text I/O
     51 ^^^^^^^^
     52 
     53 Text I/O expects and produces :class:`str` objects.  This means that whenever
     54 the backing store is natively made of bytes (such as in the case of a file),
     55 encoding and decoding of data is made transparently as well as optional
     56 translation of platform-specific newline characters.
     57 
     58 The easiest way to create a text stream is with :meth:`open()`, optionally
     59 specifying an encoding::
     60 
     61    f = open("myfile.txt", "r", encoding="utf-8")
     62 
     63 In-memory text streams are also available as :class:`StringIO` objects::
     64 
     65    f = io.StringIO("some initial text data")
     66 
     67 The text stream API is described in detail in the documentation of
     68 :class:`TextIOBase`.
     69 
     70 
     71 Binary I/O
     72 ^^^^^^^^^^
     73 
     74 Binary I/O (also called *buffered I/O*) expects
     75 :term:`bytes-like objects <bytes-like object>` and produces :class:`bytes`
     76 objects.  No encoding, decoding, or newline translation is performed.  This
     77 category of streams can be used for all kinds of non-text data, and also when
     78 manual control over the handling of text data is desired.
     79 
     80 The easiest way to create a binary stream is with :meth:`open()` with ``'b'`` in
     81 the mode string::
     82 
     83    f = open("myfile.jpg", "rb")
     84 
     85 In-memory binary streams are also available as :class:`BytesIO` objects::
     86 
     87    f = io.BytesIO(b"some initial binary data: \x00\x01")
     88 
     89 The binary stream API is described in detail in the docs of
     90 :class:`BufferedIOBase`.
     91 
     92 Other library modules may provide additional ways to create text or binary
     93 streams.  See :meth:`socket.socket.makefile` for example.
     94 
     95 
     96 Raw I/O
     97 ^^^^^^^
     98 
     99 Raw I/O (also called *unbuffered I/O*) is generally used as a low-level
    100 building-block for binary and text streams; it is rarely useful to directly
    101 manipulate a raw stream from user code.  Nevertheless, you can create a raw
    102 stream by opening a file in binary mode with buffering disabled::
    103 
    104    f = open("myfile.jpg", "rb", buffering=0)
    105 
    106 The raw stream API is described in detail in the docs of :class:`RawIOBase`.
    107 
    108 
    109 High-level Module Interface
    110 ---------------------------
    111 
    112 .. data:: DEFAULT_BUFFER_SIZE
    113 
    114    An int containing the default buffer size used by the module's buffered I/O
    115    classes.  :func:`open` uses the file's blksize (as obtained by
    116    :func:`os.stat`) if possible.
    117 
    118 
    119 .. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    120 
    121    This is an alias for the builtin :func:`open` function.
    122 
    123 
    124 .. exception:: BlockingIOError
    125 
    126    This is a compatibility alias for the builtin :exc:`BlockingIOError`
    127    exception.
    128 
    129 
    130 .. exception:: UnsupportedOperation
    131 
    132    An exception inheriting :exc:`OSError` and :exc:`ValueError` that is raised
    133    when an unsupported operation is called on a stream.
    134 
    135 
    136 In-memory streams
    137 ^^^^^^^^^^^^^^^^^
    138 
    139 It is also possible to use a :class:`str` or :term:`bytes-like object` as a
    140 file for both reading and writing.  For strings :class:`StringIO` can be used
    141 like a file opened in text mode.  :class:`BytesIO` can be used like a file
    142 opened in binary mode.  Both provide full read-write capabilities with random
    143 access.
    144 
    145 
    146 .. seealso::
    147 
    148    :mod:`sys`
    149        contains the standard IO streams: :data:`sys.stdin`, :data:`sys.stdout`,
    150        and :data:`sys.stderr`.
    151 
    152 
    153 Class hierarchy
    154 ---------------
    155 
    156 The implementation of I/O streams is organized as a hierarchy of classes.  First
    157 :term:`abstract base classes <abstract base class>` (ABCs), which are used to
    158 specify the various categories of streams, then concrete classes providing the
    159 standard stream implementations.
    160 
    161    .. note::
    162 
    163       The abstract base classes also provide default implementations of some
    164       methods in order to help implementation of concrete stream classes.  For
    165       example, :class:`BufferedIOBase` provides unoptimized implementations of
    166       :meth:`~IOBase.readinto` and :meth:`~IOBase.readline`.
    167 
    168 At the top of the I/O hierarchy is the abstract base class :class:`IOBase`.  It
    169 defines the basic interface to a stream.  Note, however, that there is no
    170 separation between reading and writing to streams; implementations are allowed
    171 to raise :exc:`UnsupportedOperation` if they do not support a given operation.
    172 
    173 The :class:`RawIOBase` ABC extends :class:`IOBase`.  It deals with the reading
    174 and writing of bytes to a stream.  :class:`FileIO` subclasses :class:`RawIOBase`
    175 to provide an interface to files in the machine's file system.
    176 
    177 The :class:`BufferedIOBase` ABC deals with buffering on a raw byte stream
    178 (:class:`RawIOBase`).  Its subclasses, :class:`BufferedWriter`,
    179 :class:`BufferedReader`, and :class:`BufferedRWPair` buffer streams that are
    180 readable, writable, and both readable and writable.  :class:`BufferedRandom`
    181 provides a buffered interface to random access streams.  Another
    182 :class:`BufferedIOBase` subclass, :class:`BytesIO`, is a stream of in-memory
    183 bytes.
    184 
    185 The :class:`TextIOBase` ABC, another subclass of :class:`IOBase`, deals with
    186 streams whose bytes represent text, and handles encoding and decoding to and
    187 from strings. :class:`TextIOWrapper`, which extends it, is a buffered text
    188 interface to a buffered raw stream (:class:`BufferedIOBase`). Finally,
    189 :class:`StringIO` is an in-memory stream for text.
    190 
    191 Argument names are not part of the specification, and only the arguments of
    192 :func:`open` are intended to be used as keyword arguments.
    193 
    194 The following table summarizes the ABCs provided by the :mod:`io` module:
    195 
    196 .. tabularcolumns:: |l|l|L|L|
    197 
    198 =========================  ==================  ========================  ==================================================
    199 ABC                        Inherits            Stub Methods              Mixin Methods and Properties
    200 =========================  ==================  ========================  ==================================================
    201 :class:`IOBase`                                ``fileno``, ``seek``,     ``close``, ``closed``, ``__enter__``,
    202                                                and ``truncate``          ``__exit__``, ``flush``, ``isatty``, ``__iter__``,
    203                                                                          ``__next__``, ``readable``, ``readline``,
    204                                                                          ``readlines``, ``seekable``, ``tell``,
    205                                                                          ``writable``, and ``writelines``
    206 :class:`RawIOBase`         :class:`IOBase`     ``readinto`` and          Inherited :class:`IOBase` methods, ``read``,
    207                                                ``write``                 and ``readall``
    208 :class:`BufferedIOBase`    :class:`IOBase`     ``detach``, ``read``,     Inherited :class:`IOBase` methods, ``readinto``,
    209                                                ``read1``, and ``write``  and ``readinto1``
    210 :class:`TextIOBase`        :class:`IOBase`     ``detach``, ``read``,     Inherited :class:`IOBase` methods, ``encoding``,
    211                                                ``readline``, and         ``errors``, and ``newlines``
    212                                                ``write``
    213 =========================  ==================  ========================  ==================================================
    214 
    215 
    216 I/O Base Classes
    217 ^^^^^^^^^^^^^^^^
    218 
    219 .. class:: IOBase
    220 
    221    The abstract base class for all I/O classes, acting on streams of bytes.
    222    There is no public constructor.
    223 
    224    This class provides empty abstract implementations for many methods
    225    that derived classes can override selectively; the default
    226    implementations represent a file that cannot be read, written or
    227    seeked.
    228 
    229    Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`,
    230    or :meth:`write` because their signatures will vary, implementations and
    231    clients should consider those methods part of the interface.  Also,
    232    implementations may raise a :exc:`ValueError` (or :exc:`UnsupportedOperation`)
    233    when operations they do not support are called.
    234 
    235    The basic type used for binary data read from or written to a file is
    236    :class:`bytes`.  Other :term:`bytes-like objects <bytes-like object>` are
    237    accepted as method arguments too.  In some cases, such as
    238    :meth:`~RawIOBase.readinto`, a writable object such as :class:`bytearray`
    239    is required.  Text I/O classes work with :class:`str` data.
    240 
    241    Note that calling any method (even inquiries) on a closed stream is
    242    undefined.  Implementations may raise :exc:`ValueError` in this case.
    243 
    244    :class:`IOBase` (and its subclasses) supports the iterator protocol, meaning
    245    that an :class:`IOBase` object can be iterated over yielding the lines in a
    246    stream.  Lines are defined slightly differently depending on whether the
    247    stream is a binary stream (yielding bytes), or a text stream (yielding
    248    character strings).  See :meth:`~IOBase.readline` below.
    249 
    250    :class:`IOBase` is also a context manager and therefore supports the
    251    :keyword:`with` statement.  In this example, *file* is closed after the
    252    :keyword:`!with` statement's suite is finished---even if an exception occurs::
    253 
    254       with open('spam.txt', 'w') as file:
    255           file.write('Spam and eggs!')
    256 
    257    :class:`IOBase` provides these data attributes and methods:
    258 
    259    .. method:: close()
    260 
    261       Flush and close this stream. This method has no effect if the file is
    262       already closed. Once the file is closed, any operation on the file
    263       (e.g. reading or writing) will raise a :exc:`ValueError`.
    264 
    265       As a convenience, it is allowed to call this method more than once;
    266       only the first call, however, will have an effect.
    267 
    268    .. attribute:: closed
    269 
    270       ``True`` if the stream is closed.
    271 
    272    .. method:: fileno()
    273 
    274       Return the underlying file descriptor (an integer) of the stream if it
    275       exists.  An :exc:`OSError` is raised if the IO object does not use a file
    276       descriptor.
    277 
    278    .. method:: flush()
    279 
    280       Flush the write buffers of the stream if applicable.  This does nothing
    281       for read-only and non-blocking streams.
    282 
    283    .. method:: isatty()
    284 
    285       Return ``True`` if the stream is interactive (i.e., connected to
    286       a terminal/tty device).
    287 
    288    .. method:: readable()
    289 
    290       Return ``True`` if the stream can be read from.  If ``False``, :meth:`read`
    291       will raise :exc:`OSError`.
    292 
    293    .. method:: readline(size=-1)
    294 
    295       Read and return one line from the stream.  If *size* is specified, at
    296       most *size* bytes will be read.
    297 
    298       The line terminator is always ``b'\n'`` for binary files; for text files,
    299       the *newline* argument to :func:`open` can be used to select the line
    300       terminator(s) recognized.
    301 
    302    .. method:: readlines(hint=-1)
    303 
    304       Read and return a list of lines from the stream.  *hint* can be specified
    305       to control the number of lines read: no more lines will be read if the
    306       total size (in bytes/characters) of all lines so far exceeds *hint*.
    307 
    308       Note that it's already possible to iterate on file objects using ``for
    309       line in file: ...`` without calling ``file.readlines()``.
    310 
    311    .. method:: seek(offset[, whence])
    312 
    313       Change the stream position to the given byte *offset*.  *offset* is
    314       interpreted relative to the position indicated by *whence*.  The default
    315       value for *whence* is :data:`SEEK_SET`.  Values for *whence* are:
    316 
    317       * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
    318         *offset* should be zero or positive
    319       * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
    320         be negative
    321       * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
    322         negative
    323 
    324       Return the new absolute position.
    325 
    326       .. versionadded:: 3.1
    327          The ``SEEK_*`` constants.
    328 
    329       .. versionadded:: 3.3
    330          Some operating systems could support additional values, like
    331          :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`. The valid values
    332          for a file could depend on it being open in text or binary mode.
    333 
    334    .. method:: seekable()
    335 
    336       Return ``True`` if the stream supports random access.  If ``False``,
    337       :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`OSError`.
    338 
    339    .. method:: tell()
    340 
    341       Return the current stream position.
    342 
    343    .. method:: truncate(size=None)
    344 
    345       Resize the stream to the given *size* in bytes (or the current position
    346       if *size* is not specified).  The current stream position isn't changed.
    347       This resizing can extend or reduce the current file size.  In case of
    348       extension, the contents of the new file area depend on the platform
    349       (on most systems, additional bytes are zero-filled).  The new file size
    350       is returned.
    351 
    352       .. versionchanged:: 3.5
    353          Windows will now zero-fill files when extending.
    354 
    355    .. method:: writable()
    356 
    357       Return ``True`` if the stream supports writing.  If ``False``,
    358       :meth:`write` and :meth:`truncate` will raise :exc:`OSError`.
    359 
    360    .. method:: writelines(lines)
    361 
    362       Write a list of lines to the stream.  Line separators are not added, so it
    363       is usual for each of the lines provided to have a line separator at the
    364       end.
    365 
    366    .. method:: __del__()
    367 
    368       Prepare for object destruction. :class:`IOBase` provides a default
    369       implementation of this method that calls the instance's
    370       :meth:`~IOBase.close` method.
    371 
    372 
    373 .. class:: RawIOBase
    374 
    375    Base class for raw binary I/O.  It inherits :class:`IOBase`.  There is no
    376    public constructor.
    377 
    378    Raw binary I/O typically provides low-level access to an underlying OS
    379    device or API, and does not try to encapsulate it in high-level primitives
    380    (this is left to Buffered I/O and Text I/O, described later in this page).
    381 
    382    In addition to the attributes and methods from :class:`IOBase`,
    383    :class:`RawIOBase` provides the following methods:
    384 
    385    .. method:: read(size=-1)
    386 
    387       Read up to *size* bytes from the object and return them.  As a convenience,
    388       if *size* is unspecified or -1, all bytes until EOF are returned.
    389       Otherwise, only one system call is ever made.  Fewer than *size* bytes may
    390       be returned if the operating system call returns fewer than *size* bytes.
    391 
    392       If 0 bytes are returned, and *size* was not 0, this indicates end of file.
    393       If the object is in non-blocking mode and no bytes are available,
    394       ``None`` is returned.
    395 
    396       The default implementation defers to :meth:`readall` and
    397       :meth:`readinto`.
    398 
    399    .. method:: readall()
    400 
    401       Read and return all the bytes from the stream until EOF, using multiple
    402       calls to the stream if necessary.
    403 
    404    .. method:: readinto(b)
    405 
    406       Read bytes into a pre-allocated, writable
    407       :term:`bytes-like object` *b*, and return the
    408       number of bytes read.  If the object is in non-blocking mode and no bytes
    409       are available, ``None`` is returned.
    410 
    411    .. method:: write(b)
    412 
    413       Write the given :term:`bytes-like object`, *b*, to the
    414       underlying raw stream, and return the number of
    415       bytes written.  This can be less than the length of *b* in
    416       bytes, depending on specifics of the underlying raw
    417       stream, and especially if it is in non-blocking mode.  ``None`` is
    418       returned if the raw stream is set not to block and no single byte could
    419       be readily written to it.  The caller may release or mutate *b* after
    420       this method returns, so the implementation should only access *b*
    421       during the method call.
    422 
    423 
    424 .. class:: BufferedIOBase
    425 
    426    Base class for binary streams that support some kind of buffering.
    427    It inherits :class:`IOBase`. There is no public constructor.
    428 
    429    The main difference with :class:`RawIOBase` is that methods :meth:`read`,
    430    :meth:`readinto` and :meth:`write` will try (respectively) to read as much
    431    input as requested or to consume all given output, at the expense of
    432    making perhaps more than one system call.
    433 
    434    In addition, those methods can raise :exc:`BlockingIOError` if the
    435    underlying raw stream is in non-blocking mode and cannot take or give
    436    enough data; unlike their :class:`RawIOBase` counterparts, they will
    437    never return ``None``.
    438 
    439    Besides, the :meth:`read` method does not have a default
    440    implementation that defers to :meth:`readinto`.
    441 
    442    A typical :class:`BufferedIOBase` implementation should not inherit from a
    443    :class:`RawIOBase` implementation, but wrap one, like
    444    :class:`BufferedWriter` and :class:`BufferedReader` do.
    445 
    446    :class:`BufferedIOBase` provides or overrides these methods and attribute in
    447    addition to those from :class:`IOBase`:
    448 
    449    .. attribute:: raw
    450 
    451       The underlying raw stream (a :class:`RawIOBase` instance) that
    452       :class:`BufferedIOBase` deals with.  This is not part of the
    453       :class:`BufferedIOBase` API and may not exist on some implementations.
    454 
    455    .. method:: detach()
    456 
    457       Separate the underlying raw stream from the buffer and return it.
    458 
    459       After the raw stream has been detached, the buffer is in an unusable
    460       state.
    461 
    462       Some buffers, like :class:`BytesIO`, do not have the concept of a single
    463       raw stream to return from this method.  They raise
    464       :exc:`UnsupportedOperation`.
    465 
    466       .. versionadded:: 3.1
    467 
    468    .. method:: read(size=-1)
    469 
    470       Read and return up to *size* bytes.  If the argument is omitted, ``None``,
    471       or negative, data is read and returned until EOF is reached.  An empty
    472       :class:`bytes` object is returned if the stream is already at EOF.
    473 
    474       If the argument is positive, and the underlying raw stream is not
    475       interactive, multiple raw reads may be issued to satisfy the byte count
    476       (unless EOF is reached first).  But for interactive raw streams, at most
    477       one raw read will be issued, and a short result does not imply that EOF is
    478       imminent.
    479 
    480       A :exc:`BlockingIOError` is raised if the underlying raw stream is in
    481       non blocking-mode, and has no data available at the moment.
    482 
    483    .. method:: read1([size])
    484 
    485       Read and return up to *size* bytes, with at most one call to the
    486       underlying raw stream's :meth:`~RawIOBase.read` (or
    487       :meth:`~RawIOBase.readinto`) method.  This can be useful if you are
    488       implementing your own buffering on top of a :class:`BufferedIOBase`
    489       object.
    490 
    491       If *size* is ``-1`` (the default), an arbitrary number of bytes are
    492       returned (more than zero unless EOF is reached).
    493 
    494    .. method:: readinto(b)
    495 
    496       Read bytes into a pre-allocated, writable
    497       :term:`bytes-like object` *b* and return the number of bytes read.
    498 
    499       Like :meth:`read`, multiple reads may be issued to the underlying raw
    500       stream, unless the latter is interactive.
    501 
    502       A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
    503       blocking-mode, and has no data available at the moment.
    504 
    505    .. method:: readinto1(b)
    506 
    507       Read bytes into a pre-allocated, writable
    508       :term:`bytes-like object` *b*, using at most one call to
    509       the underlying raw stream's :meth:`~RawIOBase.read` (or
    510       :meth:`~RawIOBase.readinto`) method. Return the number of bytes read.
    511 
    512       A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
    513       blocking-mode, and has no data available at the moment.
    514 
    515       .. versionadded:: 3.5
    516 
    517    .. method:: write(b)
    518 
    519       Write the given :term:`bytes-like object`, *b*, and return the number
    520       of bytes written (always equal to the length of *b* in bytes, since if
    521       the write fails an :exc:`OSError` will be raised).  Depending on the
    522       actual implementation, these bytes may be readily written to the
    523       underlying stream, or held in a buffer for performance and latency
    524       reasons.
    525 
    526       When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
    527       data needed to be written to the raw stream but it couldn't accept
    528       all the data without blocking.
    529 
    530       The caller may release or mutate *b* after this method returns,
    531       so the implementation should only access *b* during the method call.
    532 
    533 
    534 Raw File I/O
    535 ^^^^^^^^^^^^
    536 
    537 .. class:: FileIO(name, mode='r', closefd=True, opener=None)
    538 
    539    :class:`FileIO` represents an OS-level file containing bytes data.
    540    It implements the :class:`RawIOBase` interface (and therefore the
    541    :class:`IOBase` interface, too).
    542 
    543    The *name* can be one of two things:
    544 
    545    * a character string or :class:`bytes` object representing the path to the
    546      file which will be opened. In this case closefd must be ``True`` (the default)
    547      otherwise an error will be raised.
    548    * an integer representing the number of an existing OS-level file descriptor
    549      to which the resulting :class:`FileIO` object will give access. When the
    550      FileIO object is closed this fd will be closed as well, unless *closefd*
    551      is set to ``False``.
    552 
    553    The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading
    554    (default), writing, exclusive creation or appending. The file will be
    555    created if it doesn't exist when opened for writing or appending; it will be
    556    truncated when opened for writing. :exc:`FileExistsError` will be raised if
    557    it already exists when opened for creating. Opening a file for creating
    558    implies writing, so this mode behaves in a similar way to ``'w'``. Add a
    559    ``'+'`` to the mode to allow simultaneous reading and writing.
    560 
    561    The :meth:`read` (when called with a positive argument), :meth:`readinto`
    562    and :meth:`write` methods on this class will only make one system call.
    563 
    564    A custom opener can be used by passing a callable as *opener*. The underlying
    565    file descriptor for the file object is then obtained by calling *opener* with
    566    (*name*, *flags*). *opener* must return an open file descriptor (passing
    567    :mod:`os.open` as *opener* results in functionality similar to passing
    568    ``None``).
    569 
    570    The newly created file is :ref:`non-inheritable <fd_inheritance>`.
    571 
    572    See the :func:`open` built-in function for examples on using the *opener*
    573    parameter.
    574 
    575    .. versionchanged:: 3.3
    576       The *opener* parameter was added.
    577       The ``'x'`` mode was added.
    578 
    579    .. versionchanged:: 3.4
    580       The file is now non-inheritable.
    581 
    582    In addition to the attributes and methods from :class:`IOBase` and
    583    :class:`RawIOBase`, :class:`FileIO` provides the following data
    584    attributes:
    585 
    586    .. attribute:: mode
    587 
    588       The mode as given in the constructor.
    589 
    590    .. attribute:: name
    591 
    592       The file name.  This is the file descriptor of the file when no name is
    593       given in the constructor.
    594 
    595 
    596 Buffered Streams
    597 ^^^^^^^^^^^^^^^^
    598 
    599 Buffered I/O streams provide a higher-level interface to an I/O device
    600 than raw I/O does.
    601 
    602 .. class:: BytesIO([initial_bytes])
    603 
    604    A stream implementation using an in-memory bytes buffer.  It inherits
    605    :class:`BufferedIOBase`.  The buffer is discarded when the
    606    :meth:`~IOBase.close` method is called.
    607 
    608    The optional argument *initial_bytes* is a :term:`bytes-like object` that
    609    contains initial data.
    610 
    611    :class:`BytesIO` provides or overrides these methods in addition to those
    612    from :class:`BufferedIOBase` and :class:`IOBase`:
    613 
    614    .. method:: getbuffer()
    615 
    616       Return a readable and writable view over the contents of the buffer
    617       without copying them.  Also, mutating the view will transparently
    618       update the contents of the buffer::
    619 
    620          >>> b = io.BytesIO(b"abcdef")
    621          >>> view = b.getbuffer()
    622          >>> view[2:4] = b"56"
    623          >>> b.getvalue()
    624          b'ab56ef'
    625 
    626       .. note::
    627          As long as the view exists, the :class:`BytesIO` object cannot be
    628          resized or closed.
    629 
    630       .. versionadded:: 3.2
    631 
    632    .. method:: getvalue()
    633 
    634       Return :class:`bytes` containing the entire contents of the buffer.
    635 
    636 
    637    .. method:: read1([size])
    638 
    639       In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`.
    640 
    641       .. versionchanged:: 3.7
    642          The *size* argument is now optional.
    643 
    644    .. method:: readinto1(b)
    645 
    646       In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`.
    647 
    648       .. versionadded:: 3.5
    649 
    650 .. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
    651 
    652    A buffer providing higher-level access to a readable, sequential
    653    :class:`RawIOBase` object.  It inherits :class:`BufferedIOBase`.
    654    When reading data from this object, a larger amount of data may be
    655    requested from the underlying raw stream, and kept in an internal buffer.
    656    The buffered data can then be returned directly on subsequent reads.
    657 
    658    The constructor creates a :class:`BufferedReader` for the given readable
    659    *raw* stream and *buffer_size*.  If *buffer_size* is omitted,
    660    :data:`DEFAULT_BUFFER_SIZE` is used.
    661 
    662    :class:`BufferedReader` provides or overrides these methods in addition to
    663    those from :class:`BufferedIOBase` and :class:`IOBase`:
    664 
    665    .. method:: peek([size])
    666 
    667       Return bytes from the stream without advancing the position.  At most one
    668       single read on the raw stream is done to satisfy the call. The number of
    669       bytes returned may be less or more than requested.
    670 
    671    .. method:: read([size])
    672 
    673       Read and return *size* bytes, or if *size* is not given or negative, until
    674       EOF or if the read call would block in non-blocking mode.
    675 
    676    .. method:: read1([size])
    677 
    678       Read and return up to *size* bytes with only one call on the raw stream.
    679       If at least one byte is buffered, only buffered bytes are returned.
    680       Otherwise, one raw stream read call is made.
    681 
    682       .. versionchanged:: 3.7
    683          The *size* argument is now optional.
    684 
    685 
    686 .. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
    687 
    688    A buffer providing higher-level access to a writeable, sequential
    689    :class:`RawIOBase` object.  It inherits :class:`BufferedIOBase`.
    690    When writing to this object, data is normally placed into an internal
    691    buffer.  The buffer will be written out to the underlying :class:`RawIOBase`
    692    object under various conditions, including:
    693 
    694    * when the buffer gets too small for all pending data;
    695    * when :meth:`flush()` is called;
    696    * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects);
    697    * when the :class:`BufferedWriter` object is closed or destroyed.
    698 
    699    The constructor creates a :class:`BufferedWriter` for the given writeable
    700    *raw* stream.  If the *buffer_size* is not given, it defaults to
    701    :data:`DEFAULT_BUFFER_SIZE`.
    702 
    703    :class:`BufferedWriter` provides or overrides these methods in addition to
    704    those from :class:`BufferedIOBase` and :class:`IOBase`:
    705 
    706    .. method:: flush()
    707 
    708       Force bytes held in the buffer into the raw stream.  A
    709       :exc:`BlockingIOError` should be raised if the raw stream blocks.
    710 
    711    .. method:: write(b)
    712 
    713       Write the :term:`bytes-like object`, *b*, and return the
    714       number of bytes written.  When in non-blocking mode, a
    715       :exc:`BlockingIOError` is raised if the buffer needs to be written out but
    716       the raw stream blocks.
    717 
    718 
    719 .. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
    720 
    721    A buffered interface to random access streams.  It inherits
    722    :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
    723    :meth:`seek` and :meth:`tell` functionality.
    724 
    725    The constructor creates a reader and writer for a seekable raw stream, given
    726    in the first argument.  If the *buffer_size* is omitted it defaults to
    727    :data:`DEFAULT_BUFFER_SIZE`.
    728 
    729    :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
    730    :class:`BufferedWriter` can do.
    731 
    732 
    733 .. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
    734 
    735    A buffered I/O object combining two unidirectional :class:`RawIOBase`
    736    objects -- one readable, the other writeable -- into a single bidirectional
    737    endpoint.  It inherits :class:`BufferedIOBase`.
    738 
    739    *reader* and *writer* are :class:`RawIOBase` objects that are readable and
    740    writeable respectively.  If the *buffer_size* is omitted it defaults to
    741    :data:`DEFAULT_BUFFER_SIZE`.
    742 
    743    :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
    744    except for :meth:`~BufferedIOBase.detach`, which raises
    745    :exc:`UnsupportedOperation`.
    746 
    747    .. warning::
    748 
    749       :class:`BufferedRWPair` does not attempt to synchronize accesses to
    750       its underlying raw streams.  You should not pass it the same object
    751       as reader and writer; use :class:`BufferedRandom` instead.
    752 
    753 
    754 Text I/O
    755 ^^^^^^^^
    756 
    757 .. class:: TextIOBase
    758 
    759    Base class for text streams.  This class provides a character and line based
    760    interface to stream I/O.  There is no :meth:`readinto` method because
    761    Python's character strings are immutable.  It inherits :class:`IOBase`.
    762    There is no public constructor.
    763 
    764    :class:`TextIOBase` provides or overrides these data attributes and
    765    methods in addition to those from :class:`IOBase`:
    766 
    767    .. attribute:: encoding
    768 
    769       The name of the encoding used to decode the stream's bytes into
    770       strings, and to encode strings into bytes.
    771 
    772    .. attribute:: errors
    773 
    774       The error setting of the decoder or encoder.
    775 
    776    .. attribute:: newlines
    777 
    778       A string, a tuple of strings, or ``None``, indicating the newlines
    779       translated so far.  Depending on the implementation and the initial
    780       constructor flags, this may not be available.
    781 
    782    .. attribute:: buffer
    783 
    784       The underlying binary buffer (a :class:`BufferedIOBase` instance) that
    785       :class:`TextIOBase` deals with.  This is not part of the
    786       :class:`TextIOBase` API and may not exist in some implementations.
    787 
    788    .. method:: detach()
    789 
    790       Separate the underlying binary buffer from the :class:`TextIOBase` and
    791       return it.
    792 
    793       After the underlying buffer has been detached, the :class:`TextIOBase` is
    794       in an unusable state.
    795 
    796       Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
    797       have the concept of an underlying buffer and calling this method will
    798       raise :exc:`UnsupportedOperation`.
    799 
    800       .. versionadded:: 3.1
    801 
    802    .. method:: read(size=-1)
    803 
    804       Read and return at most *size* characters from the stream as a single
    805       :class:`str`.  If *size* is negative or ``None``, reads until EOF.
    806 
    807    .. method:: readline(size=-1)
    808 
    809       Read until newline or EOF and return a single ``str``.  If the stream is
    810       already at EOF, an empty string is returned.
    811 
    812       If *size* is specified, at most *size* characters will be read.
    813 
    814    .. method:: seek(offset[, whence])
    815 
    816       Change the stream position to the given *offset*.  Behaviour depends on
    817       the *whence* parameter.  The default value for *whence* is
    818       :data:`SEEK_SET`.
    819 
    820       * :data:`SEEK_SET` or ``0``: seek from the start of the stream
    821         (the default); *offset* must either be a number returned by
    822         :meth:`TextIOBase.tell`, or zero.  Any other *offset* value
    823         produces undefined behaviour.
    824       * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
    825         *offset* must be zero, which is a no-operation (all other values
    826         are unsupported).
    827       * :data:`SEEK_END` or ``2``: seek to the end of the stream;
    828         *offset* must be zero (all other values are unsupported).
    829 
    830       Return the new absolute position as an opaque number.
    831 
    832       .. versionadded:: 3.1
    833          The ``SEEK_*`` constants.
    834 
    835    .. method:: tell()
    836 
    837       Return the current stream position as an opaque number.  The number
    838       does not usually represent a number of bytes in the underlying
    839       binary storage.
    840 
    841    .. method:: write(s)
    842 
    843       Write the string *s* to the stream and return the number of characters
    844       written.
    845 
    846 
    847 .. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, \
    848                          line_buffering=False, write_through=False)
    849 
    850    A buffered text stream over a :class:`BufferedIOBase` binary stream.
    851    It inherits :class:`TextIOBase`.
    852 
    853    *encoding* gives the name of the encoding that the stream will be decoded or
    854    encoded with.  It defaults to
    855    :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`.
    856 
    857    *errors* is an optional string that specifies how encoding and decoding
    858    errors are to be handled.  Pass ``'strict'`` to raise a :exc:`ValueError`
    859    exception if there is an encoding error (the default of ``None`` has the same
    860    effect), or pass ``'ignore'`` to ignore errors.  (Note that ignoring encoding
    861    errors can lead to data loss.)  ``'replace'`` causes a replacement marker
    862    (such as ``'?'``) to be inserted where there is malformed data.
    863    ``'backslashreplace'`` causes malformed data to be replaced by a
    864    backslashed escape sequence.  When writing, ``'xmlcharrefreplace'``
    865    (replace with the appropriate XML character reference)  or ``'namereplace'``
    866    (replace with ``\N{...}`` escape sequences) can be used.  Any other error
    867    handling name that has been registered with
    868    :func:`codecs.register_error` is also valid.
    869 
    870    .. index::
    871       single: universal newlines; io.TextIOWrapper class
    872 
    873    *newline* controls how line endings are handled.  It can be ``None``,
    874    ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``.  It works as follows:
    875 
    876    * When reading input from the stream, if *newline* is ``None``,
    877      :term:`universal newlines` mode is enabled.  Lines in the input can end in
    878      ``'\n'``, ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'``
    879      before being returned to the caller.  If it is ``''``, universal newlines
    880      mode is enabled, but line endings are returned to the caller untranslated.
    881      If it has any of the other legal values, input lines are only terminated
    882      by the given string, and the line ending is returned to the caller
    883      untranslated.
    884 
    885    * When writing output to the stream, if *newline* is ``None``, any ``'\n'``
    886      characters written are translated to the system default line separator,
    887      :data:`os.linesep`.  If *newline* is ``''`` or ``'\n'``, no translation
    888      takes place.  If *newline* is any of the other legal values, any ``'\n'``
    889      characters written are translated to the given string.
    890 
    891    If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
    892    write contains a newline character or a carriage return.
    893 
    894    If *write_through* is ``True``, calls to :meth:`write` are guaranteed
    895    not to be buffered: any data written on the :class:`TextIOWrapper`
    896    object is immediately handled to its underlying binary *buffer*.
    897 
    898    .. versionchanged:: 3.3
    899       The *write_through* argument has been added.
    900 
    901    .. versionchanged:: 3.3
    902       The default *encoding* is now ``locale.getpreferredencoding(False)``
    903       instead of ``locale.getpreferredencoding()``. Don't change temporary the
    904       locale encoding using :func:`locale.setlocale`, use the current locale
    905       encoding instead of the user preferred encoding.
    906 
    907    :class:`TextIOWrapper` provides these members in addition to those of
    908    :class:`TextIOBase` and its parents:
    909 
    910    .. attribute:: line_buffering
    911 
    912       Whether line buffering is enabled.
    913 
    914    .. attribute:: write_through
    915 
    916       Whether writes are passed immediately to the underlying binary
    917       buffer.
    918 
    919       .. versionadded:: 3.7
    920 
    921    .. method:: reconfigure(*[, encoding][, errors][, newline][, \
    922                            line_buffering][, write_through])
    923 
    924       Reconfigure this text stream using new settings for *encoding*,
    925       *errors*, *newline*, *line_buffering* and *write_through*.
    926 
    927       Parameters not specified keep current settings, except
    928       ``errors='strict`` is used when *encoding* is specified but
    929       *errors* is not specified.
    930 
    931       It is not possible to change the encoding or newline if some data
    932       has already been read from the stream. On the other hand, changing
    933       encoding after write is possible.
    934 
    935       This method does an implicit stream flush before setting the
    936       new parameters.
    937 
    938       .. versionadded:: 3.7
    939 
    940 
    941 .. class:: StringIO(initial_value='', newline='\\n')
    942 
    943    An in-memory stream for text I/O.  The text buffer is discarded when the
    944    :meth:`~IOBase.close` method is called.
    945 
    946    The initial value of the buffer can be set by providing *initial_value*.
    947    If newline translation is enabled, newlines will be encoded as if by
    948    :meth:`~TextIOBase.write`.  The stream is positioned at the start of
    949    the buffer.
    950 
    951    The *newline* argument works like that of :class:`TextIOWrapper`.
    952    The default is to consider only ``\n`` characters as ends of lines and
    953    to do no newline translation.  If *newline* is set to ``None``,
    954    newlines are written as ``\n`` on all platforms, but universal
    955    newline decoding is still performed when reading.
    956 
    957    :class:`StringIO` provides this method in addition to those from
    958    :class:`TextIOBase` and its parents:
    959 
    960    .. method:: getvalue()
    961 
    962       Return a ``str`` containing the entire contents of the buffer.
    963       Newlines are decoded as if by :meth:`~TextIOBase.read`, although
    964       the stream position is not changed.
    965 
    966    Example usage::
    967 
    968       import io
    969 
    970       output = io.StringIO()
    971       output.write('First line.\n')
    972       print('Second line.', file=output)
    973 
    974       # Retrieve file contents -- this will be
    975       # 'First line.\nSecond line.\n'
    976       contents = output.getvalue()
    977 
    978       # Close object and discard memory buffer --
    979       # .getvalue() will now raise an exception.
    980       output.close()
    981 
    982 
    983 .. index::
    984    single: universal newlines; io.IncrementalNewlineDecoder class
    985 
    986 .. class:: IncrementalNewlineDecoder
    987 
    988    A helper codec that decodes newlines for :term:`universal newlines` mode.
    989    It inherits :class:`codecs.IncrementalDecoder`.
    990 
    991 
    992 Performance
    993 -----------
    994 
    995 This section discusses the performance of the provided concrete I/O
    996 implementations.
    997 
    998 Binary I/O
    999 ^^^^^^^^^^
   1000 
   1001 By reading and writing only large chunks of data even when the user asks for a
   1002 single byte, buffered I/O hides any inefficiency in calling and executing the
   1003 operating system's unbuffered I/O routines.  The gain depends on the OS and the
   1004 kind of I/O which is performed.  For example, on some modern OSes such as Linux,
   1005 unbuffered disk I/O can be as fast as buffered I/O.  The bottom line, however,
   1006 is that buffered I/O offers predictable performance regardless of the platform
   1007 and the backing device.  Therefore, it is almost always preferable to use
   1008 buffered I/O rather than unbuffered I/O for binary data.
   1009 
   1010 Text I/O
   1011 ^^^^^^^^
   1012 
   1013 Text I/O over a binary storage (such as a file) is significantly slower than
   1014 binary I/O over the same storage, because it requires conversions between
   1015 unicode and binary data using a character codec.  This can become noticeable
   1016 handling huge amounts of text data like large log files.  Also,
   1017 :meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both quite slow
   1018 due to the reconstruction algorithm used.
   1019 
   1020 :class:`StringIO`, however, is a native in-memory unicode container and will
   1021 exhibit similar speed to :class:`BytesIO`.
   1022 
   1023 Multi-threading
   1024 ^^^^^^^^^^^^^^^
   1025 
   1026 :class:`FileIO` objects are thread-safe to the extent that the operating system
   1027 calls (such as ``read(2)`` under Unix) they wrap are thread-safe too.
   1028 
   1029 Binary buffered objects (instances of :class:`BufferedReader`,
   1030 :class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
   1031 protect their internal structures using a lock; it is therefore safe to call
   1032 them from multiple threads at once.
   1033 
   1034 :class:`TextIOWrapper` objects are not thread-safe.
   1035 
   1036 Reentrancy
   1037 ^^^^^^^^^^
   1038 
   1039 Binary buffered objects (instances of :class:`BufferedReader`,
   1040 :class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
   1041 are not reentrant.  While reentrant calls will not happen in normal situations,
   1042 they can arise from doing I/O in a :mod:`signal` handler.  If a thread tries to
   1043 re-enter a buffered object which it is already accessing, a :exc:`RuntimeError`
   1044 is raised.  Note this doesn't prohibit a different thread from entering the
   1045 buffered object.
   1046 
   1047 The above implicitly extends to text files, since the :func:`open()` function
   1048 will wrap a buffered object inside a :class:`TextIOWrapper`.  This includes
   1049 standard streams and therefore affects the built-in function :func:`print()` as
   1050 well.
   1051 
   1052