blob: 96e02e839ae6537c7811a287ebf58c9937fb46ac [file] [log] [blame]
Georg Brandl014197c2008-04-09 18:40:51 +00001:mod:`io` --- Core tools for working with streams
2=================================================
3
4.. module:: io
5 :synopsis: Core tools for working with streams.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04006
Georg Brandl014197c2008-04-09 18:40:51 +00007.. moduleauthor:: Guido van Rossum <guido@python.org>
8.. moduleauthor:: Mike Verdone <mike.verdone@gmail.com>
9.. moduleauthor:: Mark Russell <mark.russell@zen.co.uk>
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +000010.. moduleauthor:: Antoine Pitrou <solipsis@pitrou.net>
11.. moduleauthor:: Amaury Forgeot d'Arc <amauryfa@gmail.com>
Benjamin Petersonef9f2bd2009-05-01 20:45:43 +000012.. moduleauthor:: Benjamin Peterson <benjamin@python.org>
Benjamin Peterson058e31e2009-01-16 03:54:08 +000013.. sectionauthor:: Benjamin Peterson <benjamin@python.org>
Georg Brandl014197c2008-04-09 18:40:51 +000014
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040015**Source code:** :source:`Lib/io.py`
16
17--------------
18
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000019.. _io-overview:
20
Antoine Pitroub530e142010-08-30 12:41:00 +000021Overview
22--------
Georg Brandl014197c2008-04-09 18:40:51 +000023
R David Murray9f0c9402012-08-17 20:33:54 -040024.. index::
25 single: file object; io module
26
27The :mod:`io` module provides Python's main facilities for dealing with various
28types of I/O. There are three main types of I/O: *text I/O*, *binary I/O*
29and *raw I/O*. These are generic categories, and various backing stores can
30be used for each of them. A concrete object belonging to any of these
31categories is called a :term:`file object`. Other common terms are *stream*
32and *file-like object*.
Georg Brandl014197c2008-04-09 18:40:51 +000033
Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి)cd449802018-11-12 09:36:18 +053034Independent of its category, each concrete stream object will also have
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000035various capabilities: it can be read-only, write-only, or read-write. It can
36also allow arbitrary random access (seeking forwards or backwards to any
37location), or only sequential access (for example in the case of a socket or
38pipe).
Georg Brandl014197c2008-04-09 18:40:51 +000039
Antoine Pitroub530e142010-08-30 12:41:00 +000040All streams are careful about the type of data you give to them. For example
41giving a :class:`str` object to the ``write()`` method of a binary stream
Stéphane Wirtele483f022018-10-26 12:52:11 +020042will raise a :exc:`TypeError`. So will giving a :class:`bytes` object to the
Antoine Pitroub530e142010-08-30 12:41:00 +000043``write()`` method of a text stream.
Georg Brandl014197c2008-04-09 18:40:51 +000044
Antoine Pitroua787b652011-10-12 19:02:52 +020045.. versionchanged:: 3.3
Eli Benderskyf877a7c2012-07-14 21:22:25 +030046 Operations that used to raise :exc:`IOError` now raise :exc:`OSError`, since
47 :exc:`IOError` is now an alias of :exc:`OSError`.
Antoine Pitroua787b652011-10-12 19:02:52 +020048
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000049
Antoine Pitroub530e142010-08-30 12:41:00 +000050Text I/O
51^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +000052
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000053Text I/O expects and produces :class:`str` objects. This means that whenever
54the backing store is natively made of bytes (such as in the case of a file),
55encoding and decoding of data is made transparently as well as optional
56translation of platform-specific newline characters.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000057
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000058The easiest way to create a text stream is with :meth:`open()`, optionally
59specifying an encoding::
Antoine Pitroub530e142010-08-30 12:41:00 +000060
61 f = open("myfile.txt", "r", encoding="utf-8")
62
63In-memory text streams are also available as :class:`StringIO` objects::
64
65 f = io.StringIO("some initial text data")
66
Eli Benderskyf877a7c2012-07-14 21:22:25 +030067The text stream API is described in detail in the documentation of
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000068:class:`TextIOBase`.
Antoine Pitroub530e142010-08-30 12:41:00 +000069
Antoine Pitroub530e142010-08-30 12:41:00 +000070
71Binary I/O
72^^^^^^^^^^
73
Martin Panter6bb91f32016-05-28 00:41:57 +000074Binary I/O (also called *buffered I/O*) expects
75:term:`bytes-like objects <bytes-like object>` and produces :class:`bytes`
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000076objects. No encoding, decoding, or newline translation is performed. This
77category of streams can be used for all kinds of non-text data, and also when
78manual control over the handling of text data is desired.
Antoine Pitroub530e142010-08-30 12:41:00 +000079
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000080The easiest way to create a binary stream is with :meth:`open()` with ``'b'`` in
81the mode string::
Antoine Pitroub530e142010-08-30 12:41:00 +000082
83 f = open("myfile.jpg", "rb")
84
85In-memory binary streams are also available as :class:`BytesIO` objects::
86
87 f = io.BytesIO(b"some initial binary data: \x00\x01")
88
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000089The binary stream API is described in detail in the docs of
90:class:`BufferedIOBase`.
Antoine Pitroub530e142010-08-30 12:41:00 +000091
92Other library modules may provide additional ways to create text or binary
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000093streams. See :meth:`socket.socket.makefile` for example.
94
Antoine Pitroub530e142010-08-30 12:41:00 +000095
96Raw I/O
97^^^^^^^
98
99Raw I/O (also called *unbuffered I/O*) is generally used as a low-level
100building-block for binary and text streams; it is rarely useful to directly
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000101manipulate a raw stream from user code. Nevertheless, you can create a raw
102stream by opening a file in binary mode with buffering disabled::
Antoine Pitroub530e142010-08-30 12:41:00 +0000103
104 f = open("myfile.jpg", "rb", buffering=0)
105
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000106The raw stream API is described in detail in the docs of :class:`RawIOBase`.
Benjamin Petersoncc12e1b2010-02-19 00:58:13 +0000107
Georg Brandl014197c2008-04-09 18:40:51 +0000108
Antoine Pitroub530e142010-08-30 12:41:00 +0000109High-level Module Interface
110---------------------------
Georg Brandl014197c2008-04-09 18:40:51 +0000111
112.. data:: DEFAULT_BUFFER_SIZE
113
114 An int containing the default buffer size used by the module's buffered I/O
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000115 classes. :func:`open` uses the file's blksize (as obtained by
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000116 :func:`os.stat`) if possible.
Georg Brandl014197c2008-04-09 18:40:51 +0000117
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000118
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200119.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Georg Brandl014197c2008-04-09 18:40:51 +0000120
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000121 This is an alias for the builtin :func:`open` function.
Georg Brandl014197c2008-04-09 18:40:51 +0000122
Steve Dower44f91c32019-06-27 10:47:59 -0700123 .. audit-event:: open path,mode,flags io.open
Steve Dowerb82e17e2019-05-23 08:45:22 -0700124
Steve Dower60419a72019-06-24 08:42:54 -0700125 This function raises an :ref:`auditing event <auditing>` ``open`` with
Steve Dowerb82e17e2019-05-23 08:45:22 -0700126 arguments ``path``, ``mode`` and ``flags``. The ``mode`` and ``flags``
127 arguments may have been modified or inferred from the original call.
128
129
130.. function:: open_code(path)
131
132 Opens the provided file with mode ``'rb'``. This function should be used
133 when the intent is to treat the contents as executable code.
134
Shantanu831d58d2020-05-01 10:52:10 -0700135 ``path`` should be a :class:`str` and an absolute path.
Steve Dowerb82e17e2019-05-23 08:45:22 -0700136
137 The behavior of this function may be overridden by an earlier call to the
Shantanu831d58d2020-05-01 10:52:10 -0700138 :c:func:`PyFile_SetOpenCodeHook`. However, assuming that ``path`` is a
139 :class:`str` and an absolute path, ``open_code(path)`` should always behave
140 the same as ``open(path, 'rb')``. Overriding the behavior is intended for
141 additional validation or preprocessing of the file.
Steve Dowerb82e17e2019-05-23 08:45:22 -0700142
143 .. versionadded:: 3.8
144
Georg Brandl014197c2008-04-09 18:40:51 +0000145
146.. exception:: BlockingIOError
147
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200148 This is a compatibility alias for the builtin :exc:`BlockingIOError`
149 exception.
Georg Brandl014197c2008-04-09 18:40:51 +0000150
151
152.. exception:: UnsupportedOperation
153
Antoine Pitroua787b652011-10-12 19:02:52 +0200154 An exception inheriting :exc:`OSError` and :exc:`ValueError` that is raised
Georg Brandl014197c2008-04-09 18:40:51 +0000155 when an unsupported operation is called on a stream.
156
157
Antoine Pitroub530e142010-08-30 12:41:00 +0000158.. seealso::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000159
Antoine Pitroub530e142010-08-30 12:41:00 +0000160 :mod:`sys`
161 contains the standard IO streams: :data:`sys.stdin`, :data:`sys.stdout`,
162 and :data:`sys.stderr`.
163
164
165Class hierarchy
166---------------
167
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000168The implementation of I/O streams is organized as a hierarchy of classes. First
169:term:`abstract base classes <abstract base class>` (ABCs), which are used to
170specify the various categories of streams, then concrete classes providing the
171standard stream implementations.
Antoine Pitroub530e142010-08-30 12:41:00 +0000172
173 .. note::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000174
175 The abstract base classes also provide default implementations of some
176 methods in order to help implementation of concrete stream classes. For
177 example, :class:`BufferedIOBase` provides unoptimized implementations of
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300178 :meth:`~IOBase.readinto` and :meth:`~IOBase.readline`.
Antoine Pitroub530e142010-08-30 12:41:00 +0000179
180At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It
181defines the basic interface to a stream. Note, however, that there is no
182separation between reading and writing to streams; implementations are allowed
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000183to raise :exc:`UnsupportedOperation` if they do not support a given operation.
Antoine Pitroub530e142010-08-30 12:41:00 +0000184
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000185The :class:`RawIOBase` ABC extends :class:`IOBase`. It deals with the reading
186and writing of bytes to a stream. :class:`FileIO` subclasses :class:`RawIOBase`
187to provide an interface to files in the machine's file system.
Antoine Pitroub530e142010-08-30 12:41:00 +0000188
Géry Ogam3b58a702019-09-11 16:55:13 +0200189The :class:`BufferedIOBase` ABC extends :class:`IOBase`. It deals with
190buffering on a raw binary stream (:class:`RawIOBase`). Its subclasses,
191:class:`BufferedWriter`, :class:`BufferedReader`, and :class:`BufferedRWPair`
192buffer raw binary streams that are readable, writable, and both readable and writable,
193respectively. :class:`BufferedRandom` provides a buffered interface to seekable streams.
194Another :class:`BufferedIOBase` subclass, :class:`BytesIO`, is a stream of
195in-memory bytes.
Antoine Pitroub530e142010-08-30 12:41:00 +0000196
Géry Ogam3b58a702019-09-11 16:55:13 +0200197The :class:`TextIOBase` ABC extends :class:`IOBase`. It deals with
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000198streams whose bytes represent text, and handles encoding and decoding to and
Géry Ogam3b58a702019-09-11 16:55:13 +0200199from strings. :class:`TextIOWrapper`, which extends :class:`TextIOBase`, is a buffered text
200interface to a buffered raw stream (:class:`BufferedIOBase`). Finally,
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000201:class:`StringIO` is an in-memory stream for text.
Antoine Pitroub530e142010-08-30 12:41:00 +0000202
203Argument names are not part of the specification, and only the arguments of
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000204:func:`open` are intended to be used as keyword arguments.
Antoine Pitroub530e142010-08-30 12:41:00 +0000205
Andrew Svetloved636a82012-12-06 12:20:56 +0200206The following table summarizes the ABCs provided by the :mod:`io` module:
207
Georg Brandl44ea77b2013-03-28 13:28:44 +0100208.. tabularcolumns:: |l|l|L|L|
209
Andrew Svetloved636a82012-12-06 12:20:56 +0200210========================= ================== ======================== ==================================================
211ABC Inherits Stub Methods Mixin Methods and Properties
212========================= ================== ======================== ==================================================
213:class:`IOBase` ``fileno``, ``seek``, ``close``, ``closed``, ``__enter__``,
214 and ``truncate`` ``__exit__``, ``flush``, ``isatty``, ``__iter__``,
215 ``__next__``, ``readable``, ``readline``,
216 ``readlines``, ``seekable``, ``tell``,
217 ``writable``, and ``writelines``
218:class:`RawIOBase` :class:`IOBase` ``readinto`` and Inherited :class:`IOBase` methods, ``read``,
219 ``write`` and ``readall``
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530220:class:`BufferedIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``readinto``,
221 ``read1``, and ``write`` and ``readinto1``
Andrew Svetloved636a82012-12-06 12:20:56 +0200222:class:`TextIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``encoding``,
223 ``readline``, and ``errors``, and ``newlines``
224 ``write``
225========================= ================== ======================== ==================================================
226
Antoine Pitroub530e142010-08-30 12:41:00 +0000227
Georg Brandl014197c2008-04-09 18:40:51 +0000228I/O Base Classes
Antoine Pitroub530e142010-08-30 12:41:00 +0000229^^^^^^^^^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000230
231.. class:: IOBase
232
233 The abstract base class for all I/O classes, acting on streams of bytes.
234 There is no public constructor.
235
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000236 This class provides empty abstract implementations for many methods
237 that derived classes can override selectively; the default
238 implementations represent a file that cannot be read, written or
239 seeked.
Georg Brandl014197c2008-04-09 18:40:51 +0000240
Steve Palmer7b97ab32019-04-09 05:35:27 +0100241 Even though :class:`IOBase` does not declare :meth:`read`
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000242 or :meth:`write` because their signatures will vary, implementations and
243 clients should consider those methods part of the interface. Also,
Antoine Pitroua787b652011-10-12 19:02:52 +0200244 implementations may raise a :exc:`ValueError` (or :exc:`UnsupportedOperation`)
245 when operations they do not support are called.
Georg Brandl014197c2008-04-09 18:40:51 +0000246
247 The basic type used for binary data read from or written to a file is
Martin Panter6bb91f32016-05-28 00:41:57 +0000248 :class:`bytes`. Other :term:`bytes-like objects <bytes-like object>` are
Steve Palmer7b97ab32019-04-09 05:35:27 +0100249 accepted as method arguments too. Text I/O classes work with :class:`str` data.
Georg Brandl014197c2008-04-09 18:40:51 +0000250
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000251 Note that calling any method (even inquiries) on a closed stream is
Antoine Pitroua787b652011-10-12 19:02:52 +0200252 undefined. Implementations may raise :exc:`ValueError` in this case.
Georg Brandl014197c2008-04-09 18:40:51 +0000253
Éric Araujo3f7c0e42012-12-08 22:53:43 -0500254 :class:`IOBase` (and its subclasses) supports the iterator protocol, meaning
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300255 that an :class:`IOBase` object can be iterated over yielding the lines in a
256 stream. Lines are defined slightly differently depending on whether the
257 stream is a binary stream (yielding bytes), or a text stream (yielding
258 character strings). See :meth:`~IOBase.readline` below.
Georg Brandl014197c2008-04-09 18:40:51 +0000259
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300260 :class:`IOBase` is also a context manager and therefore supports the
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000261 :keyword:`with` statement. In this example, *file* is closed after the
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200262 :keyword:`!with` statement's suite is finished---even if an exception occurs::
Georg Brandl014197c2008-04-09 18:40:51 +0000263
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000264 with open('spam.txt', 'w') as file:
265 file.write('Spam and eggs!')
Georg Brandl014197c2008-04-09 18:40:51 +0000266
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000267 :class:`IOBase` provides these data attributes and methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000268
269 .. method:: close()
270
Christian Heimesecc42a22008-11-05 19:30:32 +0000271 Flush and close this stream. This method has no effect if the file is
Georg Brandl48310cd2009-01-03 21:18:54 +0000272 already closed. Once the file is closed, any operation on the file
Georg Brandl8569e582010-05-19 20:57:08 +0000273 (e.g. reading or writing) will raise a :exc:`ValueError`.
Antoine Pitrouf9fc08f2010-04-28 19:59:32 +0000274
275 As a convenience, it is allowed to call this method more than once;
276 only the first call, however, will have an effect.
Georg Brandl014197c2008-04-09 18:40:51 +0000277
278 .. attribute:: closed
279
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300280 ``True`` if the stream is closed.
Georg Brandl014197c2008-04-09 18:40:51 +0000281
282 .. method:: fileno()
283
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000284 Return the underlying file descriptor (an integer) of the stream if it
Antoine Pitroua787b652011-10-12 19:02:52 +0200285 exists. An :exc:`OSError` is raised if the IO object does not use a file
Georg Brandl014197c2008-04-09 18:40:51 +0000286 descriptor.
287
288 .. method:: flush()
289
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000290 Flush the write buffers of the stream if applicable. This does nothing
291 for read-only and non-blocking streams.
Georg Brandl014197c2008-04-09 18:40:51 +0000292
293 .. method:: isatty()
294
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000295 Return ``True`` if the stream is interactive (i.e., connected to
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000296 a terminal/tty device).
Georg Brandl014197c2008-04-09 18:40:51 +0000297
298 .. method:: readable()
299
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200300 Return ``True`` if the stream can be read from. If ``False``, :meth:`read`
Antoine Pitroua787b652011-10-12 19:02:52 +0200301 will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000302
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300303 .. method:: readline(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000304
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300305 Read and return one line from the stream. If *size* is specified, at
306 most *size* bytes will be read.
Georg Brandl014197c2008-04-09 18:40:51 +0000307
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000308 The line terminator is always ``b'\n'`` for binary files; for text files,
Zachary Ware0069eac2014-07-18 09:11:48 -0500309 the *newline* argument to :func:`open` can be used to select the line
Georg Brandl014197c2008-04-09 18:40:51 +0000310 terminator(s) recognized.
311
Georg Brandl3dd33882009-06-01 17:35:27 +0000312 .. method:: readlines(hint=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000313
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000314 Read and return a list of lines from the stream. *hint* can be specified
315 to control the number of lines read: no more lines will be read if the
316 total size (in bytes/characters) of all lines so far exceeds *hint*.
Georg Brandl014197c2008-04-09 18:40:51 +0000317
Ezio Melottied3cd7e2013-04-15 19:08:31 +0300318 Note that it's already possible to iterate on file objects using ``for
319 line in file: ...`` without calling ``file.readlines()``.
320
Benjamin Peterson2a3d4d92019-07-10 19:43:04 -0700321 .. method:: seek(offset, whence=SEEK_SET)
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000322
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000323 Change the stream position to the given byte *offset*. *offset* is
Martin Panterdb4220e2015-09-11 03:58:30 +0000324 interpreted relative to the position indicated by *whence*. The default
325 value for *whence* is :data:`SEEK_SET`. Values for *whence* are:
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000326
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000327 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
328 *offset* should be zero or positive
329 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
330 be negative
331 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
332 negative
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000333
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000334 Return the new absolute position.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000335
Raymond Hettinger35a88362009-04-09 00:08:24 +0000336 .. versionadded:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +0000337 The ``SEEK_*`` constants.
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000338
Jesus Cea94363612012-06-22 18:32:07 +0200339 .. versionadded:: 3.3
340 Some operating systems could support additional values, like
341 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`. The valid values
342 for a file could depend on it being open in text or binary mode.
343
Georg Brandl014197c2008-04-09 18:40:51 +0000344 .. method:: seekable()
345
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000346 Return ``True`` if the stream supports random access. If ``False``,
Antoine Pitroua787b652011-10-12 19:02:52 +0200347 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000348
349 .. method:: tell()
350
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000351 Return the current stream position.
Georg Brandl014197c2008-04-09 18:40:51 +0000352
Georg Brandl3dd33882009-06-01 17:35:27 +0000353 .. method:: truncate(size=None)
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000354
Antoine Pitrou2016dc92010-05-29 12:08:25 +0000355 Resize the stream to the given *size* in bytes (or the current position
356 if *size* is not specified). The current stream position isn't changed.
357 This resizing can extend or reduce the current file size. In case of
358 extension, the contents of the new file area depend on the platform
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700359 (on most systems, additional bytes are zero-filled). The new file size
360 is returned.
361
Emmanuel Arias522630a2019-02-15 16:02:38 -0300362 .. versionchanged:: 3.5
363 Windows will now zero-fill files when extending.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000364
Georg Brandl014197c2008-04-09 18:40:51 +0000365 .. method:: writable()
366
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000367 Return ``True`` if the stream supports writing. If ``False``,
Antoine Pitroua787b652011-10-12 19:02:52 +0200368 :meth:`write` and :meth:`truncate` will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000369
370 .. method:: writelines(lines)
371
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000372 Write a list of lines to the stream. Line separators are not added, so it
373 is usual for each of the lines provided to have a line separator at the
374 end.
Georg Brandl014197c2008-04-09 18:40:51 +0000375
Benjamin Petersonef8abfc2014-06-14 18:51:34 -0700376 .. method:: __del__()
377
378 Prepare for object destruction. :class:`IOBase` provides a default
379 implementation of this method that calls the instance's
380 :meth:`~IOBase.close` method.
381
Georg Brandl014197c2008-04-09 18:40:51 +0000382
383.. class:: RawIOBase
384
Géry Ogam3b58a702019-09-11 16:55:13 +0200385 Base class for raw binary streams. It inherits :class:`IOBase`. There is no
Georg Brandl014197c2008-04-09 18:40:51 +0000386 public constructor.
387
Géry Ogam3b58a702019-09-11 16:55:13 +0200388 Raw binary streams typically provide low-level access to an underlying OS
389 device or API, and do not try to encapsulate it in high-level primitives
390 (this functionality is done at a higher-level in buffered binary streams and text streams, described later
391 in this page).
Antoine Pitrou497a7672009-09-17 17:18:01 +0000392
Géry Ogam3b58a702019-09-11 16:55:13 +0200393 :class:`RawIOBase` provides these methods in addition to those from
394 :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000395
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300396 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000397
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300398 Read up to *size* bytes from the object and return them. As a convenience,
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530399 if *size* is unspecified or -1, all bytes until EOF are returned.
400 Otherwise, only one system call is ever made. Fewer than *size* bytes may
401 be returned if the operating system call returns fewer than *size* bytes.
Antoine Pitrou78ddbe62009-10-01 16:24:45 +0000402
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300403 If 0 bytes are returned, and *size* was not 0, this indicates end of file.
Antoine Pitrou78ddbe62009-10-01 16:24:45 +0000404 If the object is in non-blocking mode and no bytes are available,
405 ``None`` is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000406
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530407 The default implementation defers to :meth:`readall` and
408 :meth:`readinto`.
409
Benjamin Petersonb47aace2008-04-09 21:38:38 +0000410 .. method:: readall()
Georg Brandl014197c2008-04-09 18:40:51 +0000411
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000412 Read and return all the bytes from the stream until EOF, using multiple
413 calls to the stream if necessary.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000414
415 .. method:: readinto(b)
416
Martin Panter6bb91f32016-05-28 00:41:57 +0000417 Read bytes into a pre-allocated, writable
418 :term:`bytes-like object` *b*, and return the
Steve Palmer7b97ab32019-04-09 05:35:27 +0100419 number of bytes read. For example, *b* might be a :class:`bytearray`.
420 If the object is in non-blocking mode and no bytes
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700421 are available, ``None`` is returned.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000422
423 .. method:: write(b)
424
Martin Panter6bb91f32016-05-28 00:41:57 +0000425 Write the given :term:`bytes-like object`, *b*, to the
426 underlying raw stream, and return the number of
427 bytes written. This can be less than the length of *b* in
428 bytes, depending on specifics of the underlying raw
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300429 stream, and especially if it is in non-blocking mode. ``None`` is
430 returned if the raw stream is set not to block and no single byte could
Martin Panter6bb91f32016-05-28 00:41:57 +0000431 be readily written to it. The caller may release or mutate *b* after
432 this method returns, so the implementation should only access *b*
433 during the method call.
Georg Brandl014197c2008-04-09 18:40:51 +0000434
435
Georg Brandl014197c2008-04-09 18:40:51 +0000436.. class:: BufferedIOBase
437
Antoine Pitrou497a7672009-09-17 17:18:01 +0000438 Base class for binary streams that support some kind of buffering.
439 It inherits :class:`IOBase`. There is no public constructor.
Georg Brandl014197c2008-04-09 18:40:51 +0000440
Antoine Pitrou497a7672009-09-17 17:18:01 +0000441 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
442 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
443 input as requested or to consume all given output, at the expense of
444 making perhaps more than one system call.
445
446 In addition, those methods can raise :exc:`BlockingIOError` if the
447 underlying raw stream is in non-blocking mode and cannot take or give
448 enough data; unlike their :class:`RawIOBase` counterparts, they will
449 never return ``None``.
450
451 Besides, the :meth:`read` method does not have a default
Georg Brandl014197c2008-04-09 18:40:51 +0000452 implementation that defers to :meth:`readinto`.
453
Antoine Pitrou497a7672009-09-17 17:18:01 +0000454 A typical :class:`BufferedIOBase` implementation should not inherit from a
455 :class:`RawIOBase` implementation, but wrap one, like
456 :class:`BufferedWriter` and :class:`BufferedReader` do.
Georg Brandl014197c2008-04-09 18:40:51 +0000457
Géry Ogam3b58a702019-09-11 16:55:13 +0200458 :class:`BufferedIOBase` provides or overrides these data attributes and
459 methods in addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000460
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000461 .. attribute:: raw
462
463 The underlying raw stream (a :class:`RawIOBase` instance) that
464 :class:`BufferedIOBase` deals with. This is not part of the
465 :class:`BufferedIOBase` API and may not exist on some implementations.
466
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000467 .. method:: detach()
468
469 Separate the underlying raw stream from the buffer and return it.
470
471 After the raw stream has been detached, the buffer is in an unusable
472 state.
473
474 Some buffers, like :class:`BytesIO`, do not have the concept of a single
475 raw stream to return from this method. They raise
476 :exc:`UnsupportedOperation`.
477
Benjamin Petersonedc36472009-05-01 20:48:14 +0000478 .. versionadded:: 3.1
479
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300480 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000481
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300482 Read and return up to *size* bytes. If the argument is omitted, ``None``,
483 or negative, data is read and returned until EOF is reached. An empty
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300484 :class:`bytes` object is returned if the stream is already at EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000485
486 If the argument is positive, and the underlying raw stream is not
487 interactive, multiple raw reads may be issued to satisfy the byte count
488 (unless EOF is reached first). But for interactive raw streams, at most
489 one raw read will be issued, and a short result does not imply that EOF is
490 imminent.
491
Antoine Pitrou497a7672009-09-17 17:18:01 +0000492 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
493 non blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000494
Martin Panterccb2c0e2016-10-20 23:48:14 +0000495 .. method:: read1([size])
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000496
Benjamin Petersona96fea02014-06-22 14:17:44 -0700497 Read and return up to *size* bytes, with at most one call to the
498 underlying raw stream's :meth:`~RawIOBase.read` (or
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700499 :meth:`~RawIOBase.readinto`) method. This can be useful if you are
500 implementing your own buffering on top of a :class:`BufferedIOBase`
501 object.
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000502
Martin Panter4e946792016-10-21 23:00:10 +0000503 If *size* is ``-1`` (the default), an arbitrary number of bytes are
Martin Panterccb2c0e2016-10-20 23:48:14 +0000504 returned (more than zero unless EOF is reached).
505
Georg Brandl014197c2008-04-09 18:40:51 +0000506 .. method:: readinto(b)
507
Martin Panter6bb91f32016-05-28 00:41:57 +0000508 Read bytes into a pre-allocated, writable
509 :term:`bytes-like object` *b* and return the number of bytes read.
Steve Palmer7b97ab32019-04-09 05:35:27 +0100510 For example, *b* might be a :class:`bytearray`.
Georg Brandl014197c2008-04-09 18:40:51 +0000511
512 Like :meth:`read`, multiple reads may be issued to the underlying raw
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300513 stream, unless the latter is interactive.
Georg Brandl014197c2008-04-09 18:40:51 +0000514
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700515 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
516 blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000517
Benjamin Petersona96fea02014-06-22 14:17:44 -0700518 .. method:: readinto1(b)
519
Martin Panter6bb91f32016-05-28 00:41:57 +0000520 Read bytes into a pre-allocated, writable
521 :term:`bytes-like object` *b*, using at most one call to
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700522 the underlying raw stream's :meth:`~RawIOBase.read` (or
523 :meth:`~RawIOBase.readinto`) method. Return the number of bytes read.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700524
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700525 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
526 blocking-mode, and has no data available at the moment.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700527
528 .. versionadded:: 3.5
529
Georg Brandl014197c2008-04-09 18:40:51 +0000530 .. method:: write(b)
531
Martin Panter6bb91f32016-05-28 00:41:57 +0000532 Write the given :term:`bytes-like object`, *b*, and return the number
533 of bytes written (always equal to the length of *b* in bytes, since if
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300534 the write fails an :exc:`OSError` will be raised). Depending on the
535 actual implementation, these bytes may be readily written to the
536 underlying stream, or held in a buffer for performance and latency
537 reasons.
Georg Brandl014197c2008-04-09 18:40:51 +0000538
Antoine Pitrou497a7672009-09-17 17:18:01 +0000539 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
540 data needed to be written to the raw stream but it couldn't accept
541 all the data without blocking.
Georg Brandl014197c2008-04-09 18:40:51 +0000542
Martin Panter6bb91f32016-05-28 00:41:57 +0000543 The caller may release or mutate *b* after this method returns,
544 so the implementation should only access *b* during the method call.
545
Georg Brandl014197c2008-04-09 18:40:51 +0000546
Benjamin Petersonaa069002009-01-23 03:26:36 +0000547Raw File I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000548^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000549
Ross Lagerwall59142db2011-10-31 20:34:46 +0200550.. class:: FileIO(name, mode='r', closefd=True, opener=None)
Benjamin Petersonaa069002009-01-23 03:26:36 +0000551
Géry Ogam3b58a702019-09-11 16:55:13 +0200552 A raw binary stream representing an OS-level file containing bytes data. It
553 inherits :class:`RawIOBase`.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000554
555 The *name* can be one of two things:
556
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300557 * a character string or :class:`bytes` object representing the path to the
Serhiy Storchaka4adf01c2016-10-19 18:30:05 +0300558 file which will be opened. In this case closefd must be ``True`` (the default)
Robert Collins933430a2014-10-18 13:32:43 +1300559 otherwise an error will be raised.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000560 * an integer representing the number of an existing OS-level file descriptor
Robert Collins933430a2014-10-18 13:32:43 +1300561 to which the resulting :class:`FileIO` object will give access. When the
562 FileIO object is closed this fd will be closed as well, unless *closefd*
563 is set to ``False``.
Benjamin Petersonaa069002009-01-23 03:26:36 +0000564
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100565 The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading
Charles-François Natalid612de12012-01-14 11:51:00 +0100566 (default), writing, exclusive creation or appending. The file will be
567 created if it doesn't exist when opened for writing or appending; it will be
568 truncated when opened for writing. :exc:`FileExistsError` will be raised if
569 it already exists when opened for creating. Opening a file for creating
570 implies writing, so this mode behaves in a similar way to ``'w'``. Add a
571 ``'+'`` to the mode to allow simultaneous reading and writing.
Benjamin Petersonaa069002009-01-23 03:26:36 +0000572
Antoine Pitrou497a7672009-09-17 17:18:01 +0000573 The :meth:`read` (when called with a positive argument), :meth:`readinto`
574 and :meth:`write` methods on this class will only make one system call.
575
Ross Lagerwall59142db2011-10-31 20:34:46 +0200576 A custom opener can be used by passing a callable as *opener*. The underlying
577 file descriptor for the file object is then obtained by calling *opener* with
578 (*name*, *flags*). *opener* must return an open file descriptor (passing
579 :mod:`os.open` as *opener* results in functionality similar to passing
580 ``None``).
581
Victor Stinnerdaf45552013-08-28 00:53:59 +0200582 The newly created file is :ref:`non-inheritable <fd_inheritance>`.
583
Éric Araujo8f423c92012-11-03 17:06:52 -0400584 See the :func:`open` built-in function for examples on using the *opener*
585 parameter.
586
Ross Lagerwall59142db2011-10-31 20:34:46 +0200587 .. versionchanged:: 3.3
588 The *opener* parameter was added.
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100589 The ``'x'`` mode was added.
Ross Lagerwall59142db2011-10-31 20:34:46 +0200590
Victor Stinnerdaf45552013-08-28 00:53:59 +0200591 .. versionchanged:: 3.4
592 The file is now non-inheritable.
593
Géry Ogam3b58a702019-09-11 16:55:13 +0200594 :class:`FileIO` provides these data attributes in addition to those from
595 :class:`RawIOBase` and :class:`IOBase`:
Benjamin Petersonaa069002009-01-23 03:26:36 +0000596
597 .. attribute:: mode
598
599 The mode as given in the constructor.
600
601 .. attribute:: name
602
603 The file name. This is the file descriptor of the file when no name is
604 given in the constructor.
605
Benjamin Petersonaa069002009-01-23 03:26:36 +0000606
607Buffered Streams
Antoine Pitroub530e142010-08-30 12:41:00 +0000608^^^^^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000609
Antoine Pitroubed81c82010-12-03 19:14:17 +0000610Buffered I/O streams provide a higher-level interface to an I/O device
611than raw I/O does.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000612
Georg Brandl014197c2008-04-09 18:40:51 +0000613.. class:: BytesIO([initial_bytes])
614
Géry Ogam3b58a702019-09-11 16:55:13 +0200615 A binary stream using an in-memory bytes buffer. It inherits
Serhiy Storchakac057c382015-02-03 02:00:18 +0200616 :class:`BufferedIOBase`. The buffer is discarded when the
617 :meth:`~IOBase.close` method is called.
Georg Brandl014197c2008-04-09 18:40:51 +0000618
Martin Panter6bb91f32016-05-28 00:41:57 +0000619 The optional argument *initial_bytes* is a :term:`bytes-like object` that
620 contains initial data.
Georg Brandl014197c2008-04-09 18:40:51 +0000621
622 :class:`BytesIO` provides or overrides these methods in addition to those
623 from :class:`BufferedIOBase` and :class:`IOBase`:
624
Antoine Pitrou972ee132010-09-06 18:48:21 +0000625 .. method:: getbuffer()
626
627 Return a readable and writable view over the contents of the buffer
628 without copying them. Also, mutating the view will transparently
629 update the contents of the buffer::
630
631 >>> b = io.BytesIO(b"abcdef")
632 >>> view = b.getbuffer()
633 >>> view[2:4] = b"56"
634 >>> b.getvalue()
635 b'ab56ef'
636
637 .. note::
638 As long as the view exists, the :class:`BytesIO` object cannot be
Serhiy Storchakac057c382015-02-03 02:00:18 +0200639 resized or closed.
Antoine Pitrou972ee132010-09-06 18:48:21 +0000640
641 .. versionadded:: 3.2
642
Georg Brandl014197c2008-04-09 18:40:51 +0000643 .. method:: getvalue()
644
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300645 Return :class:`bytes` containing the entire contents of the buffer.
Georg Brandl014197c2008-04-09 18:40:51 +0000646
Serhiy Storchakac057c382015-02-03 02:00:18 +0200647
Martin Panterccb2c0e2016-10-20 23:48:14 +0000648 .. method:: read1([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000649
Martin Panterccb2c0e2016-10-20 23:48:14 +0000650 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`.
Georg Brandl014197c2008-04-09 18:40:51 +0000651
Martin Panterccb2c0e2016-10-20 23:48:14 +0000652 .. versionchanged:: 3.7
653 The *size* argument is now optional.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700654
Martin Panterccb2c0e2016-10-20 23:48:14 +0000655 .. method:: readinto1(b)
656
657 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700658
659 .. versionadded:: 3.5
Georg Brandl014197c2008-04-09 18:40:51 +0000660
Georg Brandl3dd33882009-06-01 17:35:27 +0000661.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000662
Géry Ogam3b58a702019-09-11 16:55:13 +0200663 A buffered binary stream providing higher-level access to a readable, non
664 seekable :class:`RawIOBase` raw binary stream. It inherits
665 :class:`BufferedIOBase`.
666
Antoine Pitrou497a7672009-09-17 17:18:01 +0000667 When reading data from this object, a larger amount of data may be
668 requested from the underlying raw stream, and kept in an internal buffer.
669 The buffered data can then be returned directly on subsequent reads.
Georg Brandl014197c2008-04-09 18:40:51 +0000670
671 The constructor creates a :class:`BufferedReader` for the given readable
672 *raw* stream and *buffer_size*. If *buffer_size* is omitted,
673 :data:`DEFAULT_BUFFER_SIZE` is used.
674
675 :class:`BufferedReader` provides or overrides these methods in addition to
676 those from :class:`BufferedIOBase` and :class:`IOBase`:
677
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300678 .. method:: peek([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000679
Benjamin Petersonc43a26d2009-06-16 23:09:24 +0000680 Return bytes from the stream without advancing the position. At most one
Benjamin Peterson2a8b54d2009-06-14 14:37:23 +0000681 single read on the raw stream is done to satisfy the call. The number of
682 bytes returned may be less or more than requested.
Georg Brandl014197c2008-04-09 18:40:51 +0000683
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300684 .. method:: read([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000685
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300686 Read and return *size* bytes, or if *size* is not given or negative, until
687 EOF or if the read call would block in non-blocking mode.
Georg Brandl014197c2008-04-09 18:40:51 +0000688
Martin Panterccb2c0e2016-10-20 23:48:14 +0000689 .. method:: read1([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000690
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300691 Read and return up to *size* bytes with only one call on the raw stream.
692 If at least one byte is buffered, only buffered bytes are returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000693 Otherwise, one raw stream read call is made.
694
Martin Panterccb2c0e2016-10-20 23:48:14 +0000695 .. versionchanged:: 3.7
696 The *size* argument is now optional.
697
Georg Brandl014197c2008-04-09 18:40:51 +0000698
Georg Brandl3dd33882009-06-01 17:35:27 +0000699.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000700
Géry Ogam3b58a702019-09-11 16:55:13 +0200701 A buffered binary stream providing higher-level access to a writeable, non
702 seekable :class:`RawIOBase` raw binary stream. It inherits
703 :class:`BufferedIOBase`.
704
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300705 When writing to this object, data is normally placed into an internal
Antoine Pitrou497a7672009-09-17 17:18:01 +0000706 buffer. The buffer will be written out to the underlying :class:`RawIOBase`
707 object under various conditions, including:
708
709 * when the buffer gets too small for all pending data;
710 * when :meth:`flush()` is called;
711 * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects);
712 * when the :class:`BufferedWriter` object is closed or destroyed.
Georg Brandl014197c2008-04-09 18:40:51 +0000713
714 The constructor creates a :class:`BufferedWriter` for the given writeable
715 *raw* stream. If the *buffer_size* is not given, it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000716 :data:`DEFAULT_BUFFER_SIZE`.
717
Georg Brandl014197c2008-04-09 18:40:51 +0000718 :class:`BufferedWriter` provides or overrides these methods in addition to
719 those from :class:`BufferedIOBase` and :class:`IOBase`:
720
721 .. method:: flush()
722
723 Force bytes held in the buffer into the raw stream. A
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000724 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000725
726 .. method:: write(b)
727
Martin Panter6bb91f32016-05-28 00:41:57 +0000728 Write the :term:`bytes-like object`, *b*, and return the
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300729 number of bytes written. When in non-blocking mode, a
730 :exc:`BlockingIOError` is raised if the buffer needs to be written out but
731 the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000732
733
Georg Brandl3dd33882009-06-01 17:35:27 +0000734.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000735
Géry Ogam3b58a702019-09-11 16:55:13 +0200736 A buffered binary stream providing higher-level access to a seekable
737 :class:`RawIOBase` raw binary stream. It inherits :class:`BufferedReader`
738 and :class:`BufferedWriter`.
Georg Brandl014197c2008-04-09 18:40:51 +0000739
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000740 The constructor creates a reader and writer for a seekable raw stream, given
Georg Brandl014197c2008-04-09 18:40:51 +0000741 in the first argument. If the *buffer_size* is omitted it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000742 :data:`DEFAULT_BUFFER_SIZE`.
743
Georg Brandl014197c2008-04-09 18:40:51 +0000744 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
Christopher Headb13552c2019-04-12 08:50:41 -0700745 :class:`BufferedWriter` can do. In addition, :meth:`seek` and :meth:`tell`
746 are guaranteed to be implemented.
Georg Brandl014197c2008-04-09 18:40:51 +0000747
748
Antoine Pitrou13d28952011-08-20 19:48:43 +0200749.. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
750
Géry Ogam3b58a702019-09-11 16:55:13 +0200751 A buffered binary stream providing higher-level access to two non seekable
752 :class:`RawIOBase` raw binary streams---one readable, the other writeable.
753 It inherits :class:`BufferedIOBase`.
Antoine Pitrou13d28952011-08-20 19:48:43 +0200754
755 *reader* and *writer* are :class:`RawIOBase` objects that are readable and
756 writeable respectively. If the *buffer_size* is omitted it defaults to
757 :data:`DEFAULT_BUFFER_SIZE`.
758
Antoine Pitrou13d28952011-08-20 19:48:43 +0200759 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
760 except for :meth:`~BufferedIOBase.detach`, which raises
761 :exc:`UnsupportedOperation`.
762
763 .. warning::
Larry Hastings3732ed22014-03-15 21:13:56 -0700764
Antoine Pitrou13d28952011-08-20 19:48:43 +0200765 :class:`BufferedRWPair` does not attempt to synchronize accesses to
766 its underlying raw streams. You should not pass it the same object
767 as reader and writer; use :class:`BufferedRandom` instead.
768
769
Georg Brandl014197c2008-04-09 18:40:51 +0000770Text I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000771^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000772
773.. class:: TextIOBase
774
775 Base class for text streams. This class provides a character and line based
Géry Ogam3b58a702019-09-11 16:55:13 +0200776 interface to stream I/O. It inherits :class:`IOBase`. There is no public
777 constructor.
Georg Brandl014197c2008-04-09 18:40:51 +0000778
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000779 :class:`TextIOBase` provides or overrides these data attributes and
780 methods in addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000781
782 .. attribute:: encoding
783
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000784 The name of the encoding used to decode the stream's bytes into
Georg Brandl014197c2008-04-09 18:40:51 +0000785 strings, and to encode strings into bytes.
786
Benjamin Peterson0926ad12009-06-06 18:02:12 +0000787 .. attribute:: errors
788
789 The error setting of the decoder or encoder.
790
Georg Brandl014197c2008-04-09 18:40:51 +0000791 .. attribute:: newlines
792
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000793 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrou497a7672009-09-17 17:18:01 +0000794 translated so far. Depending on the implementation and the initial
795 constructor flags, this may not be available.
Georg Brandl014197c2008-04-09 18:40:51 +0000796
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000797 .. attribute:: buffer
798
799 The underlying binary buffer (a :class:`BufferedIOBase` instance) that
800 :class:`TextIOBase` deals with. This is not part of the
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300801 :class:`TextIOBase` API and may not exist in some implementations.
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000802
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000803 .. method:: detach()
804
Antoine Pitrou497a7672009-09-17 17:18:01 +0000805 Separate the underlying binary buffer from the :class:`TextIOBase` and
806 return it.
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000807
808 After the underlying buffer has been detached, the :class:`TextIOBase` is
809 in an unusable state.
810
811 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
812 have the concept of an underlying buffer and calling this method will
813 raise :exc:`UnsupportedOperation`.
814
Benjamin Petersonedc36472009-05-01 20:48:14 +0000815 .. versionadded:: 3.1
816
Andrés Delfinob6bb77c2018-07-07 17:17:16 -0300817 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000818
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300819 Read and return at most *size* characters from the stream as a single
820 :class:`str`. If *size* is negative or ``None``, reads until EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000821
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300822 .. method:: readline(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000823
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000824 Read until newline or EOF and return a single ``str``. If the stream is
825 already at EOF, an empty string is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000826
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300827 If *size* is specified, at most *size* characters will be read.
Antoine Pitrou707bd4e2012-07-25 22:38:33 +0200828
Benjamin Peterson2a3d4d92019-07-10 19:43:04 -0700829 .. method:: seek(offset, whence=SEEK_SET)
Antoine Pitrouf49d1522012-01-21 20:20:49 +0100830
Martin Panterdb4220e2015-09-11 03:58:30 +0000831 Change the stream position to the given *offset*. Behaviour depends on
832 the *whence* parameter. The default value for *whence* is
833 :data:`SEEK_SET`.
Antoine Pitrouf49d1522012-01-21 20:20:49 +0100834
835 * :data:`SEEK_SET` or ``0``: seek from the start of the stream
836 (the default); *offset* must either be a number returned by
837 :meth:`TextIOBase.tell`, or zero. Any other *offset* value
838 produces undefined behaviour.
839 * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
840 *offset* must be zero, which is a no-operation (all other values
841 are unsupported).
842 * :data:`SEEK_END` or ``2``: seek to the end of the stream;
843 *offset* must be zero (all other values are unsupported).
844
845 Return the new absolute position as an opaque number.
846
847 .. versionadded:: 3.1
848 The ``SEEK_*`` constants.
849
850 .. method:: tell()
851
852 Return the current stream position as an opaque number. The number
853 does not usually represent a number of bytes in the underlying
854 binary storage.
855
Georg Brandl014197c2008-04-09 18:40:51 +0000856 .. method:: write(s)
857
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000858 Write the string *s* to the stream and return the number of characters
859 written.
Georg Brandl014197c2008-04-09 18:40:51 +0000860
861
Antoine Pitrou664091b2011-07-23 22:00:03 +0200862.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, \
863 line_buffering=False, write_through=False)
Georg Brandl014197c2008-04-09 18:40:51 +0000864
Géry Ogam3b58a702019-09-11 16:55:13 +0200865 A buffered text stream providing higher-level access to a
866 :class:`BufferedIOBase` buffered binary stream. It inherits
867 :class:`TextIOBase`.
Georg Brandl014197c2008-04-09 18:40:51 +0000868
869 *encoding* gives the name of the encoding that the stream will be decoded or
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300870 encoded with. It defaults to
871 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`.
Georg Brandl014197c2008-04-09 18:40:51 +0000872
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000873 *errors* is an optional string that specifies how encoding and decoding
874 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
875 exception if there is an encoding error (the default of ``None`` has the same
876 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
877 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Serhiy Storchaka07985ef2015-01-25 22:56:57 +0200878 (such as ``'?'``) to be inserted where there is malformed data.
879 ``'backslashreplace'`` causes malformed data to be replaced by a
880 backslashed escape sequence. When writing, ``'xmlcharrefreplace'``
881 (replace with the appropriate XML character reference) or ``'namereplace'``
882 (replace with ``\N{...}`` escape sequences) can be used. Any other error
883 handling name that has been registered with
Serhiy Storchaka166ebc42014-11-25 13:57:17 +0200884 :func:`codecs.register_error` is also valid.
Georg Brandl014197c2008-04-09 18:40:51 +0000885
R David Murray1b00f252012-08-15 10:43:58 -0400886 .. index::
887 single: universal newlines; io.TextIOWrapper class
888
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200889 *newline* controls how line endings are handled. It can be ``None``,
890 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
891
R David Murray1b00f252012-08-15 10:43:58 -0400892 * When reading input from the stream, if *newline* is ``None``,
R David Murrayee0a9452012-08-15 11:05:36 -0400893 :term:`universal newlines` mode is enabled. Lines in the input can end in
894 ``'\n'``, ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'``
Géry Ogam3b58a702019-09-11 16:55:13 +0200895 before being returned to the caller. If *newline* is ``''``, universal
896 newlines mode is enabled, but line endings are returned to the caller
897 untranslated. If *newline* has any of the other legal values, input lines
898 are only terminated by the given string, and the line ending is returned to
899 the caller untranslated.
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200900
Georg Brandl296d1be2012-08-14 09:39:07 +0200901 * When writing output to the stream, if *newline* is ``None``, any ``'\n'``
902 characters written are translated to the system default line separator,
903 :data:`os.linesep`. If *newline* is ``''`` or ``'\n'``, no translation
904 takes place. If *newline* is any of the other legal values, any ``'\n'``
905 characters written are translated to the given string.
Georg Brandl014197c2008-04-09 18:40:51 +0000906
907 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
Elena Oat7ffd4c52018-05-14 17:48:01 +0300908 write contains a newline character or a carriage return.
Georg Brandl014197c2008-04-09 18:40:51 +0000909
Antoine Pitrou664091b2011-07-23 22:00:03 +0200910 If *write_through* is ``True``, calls to :meth:`write` are guaranteed
911 not to be buffered: any data written on the :class:`TextIOWrapper`
912 object is immediately handled to its underlying binary *buffer*.
913
914 .. versionchanged:: 3.3
915 The *write_through* argument has been added.
916
Victor Stinnerf86a5e82012-06-05 13:43:22 +0200917 .. versionchanged:: 3.3
918 The default *encoding* is now ``locale.getpreferredencoding(False)``
919 instead of ``locale.getpreferredencoding()``. Don't change temporary the
920 locale encoding using :func:`locale.setlocale`, use the current locale
921 encoding instead of the user preferred encoding.
922
Géry Ogam3b58a702019-09-11 16:55:13 +0200923 :class:`TextIOWrapper` provides these data attributes and methods in
924 addition to those from :class:`TextIOBase` and :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000925
Georg Brandl014197c2008-04-09 18:40:51 +0000926 .. attribute:: line_buffering
927
928 Whether line buffering is enabled.
Georg Brandl48310cd2009-01-03 21:18:54 +0000929
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200930 .. attribute:: write_through
931
932 Whether writes are passed immediately to the underlying binary
933 buffer.
934
935 .. versionadded:: 3.7
936
INADA Naoki507434f2017-12-21 09:59:53 +0900937 .. method:: reconfigure(*[, encoding][, errors][, newline][, \
938 line_buffering][, write_through])
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200939
INADA Naoki507434f2017-12-21 09:59:53 +0900940 Reconfigure this text stream using new settings for *encoding*,
941 *errors*, *newline*, *line_buffering* and *write_through*.
942
943 Parameters not specified keep current settings, except
Harmon35068bd2019-06-19 16:01:27 -0500944 ``errors='strict'`` is used when *encoding* is specified but
INADA Naoki507434f2017-12-21 09:59:53 +0900945 *errors* is not specified.
946
947 It is not possible to change the encoding or newline if some data
948 has already been read from the stream. On the other hand, changing
949 encoding after write is possible.
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200950
951 This method does an implicit stream flush before setting the
952 new parameters.
953
954 .. versionadded:: 3.7
955
Georg Brandl014197c2008-04-09 18:40:51 +0000956
Julien Palard5c1f15b2021-01-25 15:46:06 +0100957.. class:: StringIO(initial_value='', newline='\\n')
Georg Brandl014197c2008-04-09 18:40:51 +0000958
Géry Ogam3b58a702019-09-11 16:55:13 +0200959 A text stream using an in-memory text buffer. It inherits
960 :class:`TextIOBase`.
961
962 The text buffer is discarded when the :meth:`~IOBase.close` method is
963 called.
Georg Brandl014197c2008-04-09 18:40:51 +0000964
Martin Pantercfad5432015-10-10 03:01:20 +0000965 The initial value of the buffer can be set by providing *initial_value*.
966 If newline translation is enabled, newlines will be encoded as if by
967 :meth:`~TextIOBase.write`. The stream is positioned at the start of
968 the buffer.
969
Géry Ogam3b58a702019-09-11 16:55:13 +0200970 The *newline* argument works like that of :class:`TextIOWrapper`,
971 except that when writing output to the stream, if *newline* is ``None``,
972 newlines are written as ``\n`` on all platforms.
Georg Brandl014197c2008-04-09 18:40:51 +0000973
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000974 :class:`StringIO` provides this method in addition to those from
Géry Ogam3b58a702019-09-11 16:55:13 +0200975 :class:`TextIOBase` and :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000976
977 .. method:: getvalue()
978
Serhiy Storchakac057c382015-02-03 02:00:18 +0200979 Return a ``str`` containing the entire contents of the buffer.
Martin Pantercfad5432015-10-10 03:01:20 +0000980 Newlines are decoded as if by :meth:`~TextIOBase.read`, although
981 the stream position is not changed.
Georg Brandl014197c2008-04-09 18:40:51 +0000982
Georg Brandl2932d932008-05-30 06:27:09 +0000983 Example usage::
984
985 import io
986
987 output = io.StringIO()
988 output.write('First line.\n')
989 print('Second line.', file=output)
990
991 # Retrieve file contents -- this will be
992 # 'First line.\nSecond line.\n'
993 contents = output.getvalue()
994
Georg Brandl48310cd2009-01-03 21:18:54 +0000995 # Close object and discard memory buffer --
Georg Brandl2932d932008-05-30 06:27:09 +0000996 # .getvalue() will now raise an exception.
997 output.close()
Georg Brandl014197c2008-04-09 18:40:51 +0000998
Antoine Pitroub530e142010-08-30 12:41:00 +0000999
R David Murray1b00f252012-08-15 10:43:58 -04001000.. index::
1001 single: universal newlines; io.IncrementalNewlineDecoder class
1002
Georg Brandl014197c2008-04-09 18:40:51 +00001003.. class:: IncrementalNewlineDecoder
1004
R David Murray1b00f252012-08-15 10:43:58 -04001005 A helper codec that decodes newlines for :term:`universal newlines` mode.
1006 It inherits :class:`codecs.IncrementalDecoder`.
Georg Brandl014197c2008-04-09 18:40:51 +00001007
Antoine Pitroubed81c82010-12-03 19:14:17 +00001008
Antoine Pitroubed81c82010-12-03 19:14:17 +00001009Performance
Benjamin Petersonedf51322011-02-24 03:03:46 +00001010-----------
1011
1012This section discusses the performance of the provided concrete I/O
1013implementations.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001014
1015Binary I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +00001016^^^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +00001017
Benjamin Petersonedf51322011-02-24 03:03:46 +00001018By reading and writing only large chunks of data even when the user asks for a
1019single byte, buffered I/O hides any inefficiency in calling and executing the
1020operating system's unbuffered I/O routines. The gain depends on the OS and the
1021kind of I/O which is performed. For example, on some modern OSes such as Linux,
1022unbuffered disk I/O can be as fast as buffered I/O. The bottom line, however,
1023is that buffered I/O offers predictable performance regardless of the platform
Eli Benderskyf877a7c2012-07-14 21:22:25 +03001024and the backing device. Therefore, it is almost always preferable to use
1025buffered I/O rather than unbuffered I/O for binary data.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001026
1027Text I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +00001028^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +00001029
1030Text I/O over a binary storage (such as a file) is significantly slower than
Benjamin Petersonedf51322011-02-24 03:03:46 +00001031binary I/O over the same storage, because it requires conversions between
1032unicode and binary data using a character codec. This can become noticeable
1033handling huge amounts of text data like large log files. Also,
1034:meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both quite slow
1035due to the reconstruction algorithm used.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001036
1037:class:`StringIO`, however, is a native in-memory unicode container and will
1038exhibit similar speed to :class:`BytesIO`.
1039
1040Multi-threading
1041^^^^^^^^^^^^^^^
1042
Benjamin Petersonedf51322011-02-24 03:03:46 +00001043:class:`FileIO` objects are thread-safe to the extent that the operating system
1044calls (such as ``read(2)`` under Unix) they wrap are thread-safe too.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001045
1046Binary buffered objects (instances of :class:`BufferedReader`,
1047:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
1048protect their internal structures using a lock; it is therefore safe to call
1049them from multiple threads at once.
1050
1051:class:`TextIOWrapper` objects are not thread-safe.
1052
1053Reentrancy
1054^^^^^^^^^^
1055
1056Binary buffered objects (instances of :class:`BufferedReader`,
1057:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
1058are not reentrant. While reentrant calls will not happen in normal situations,
Benjamin Petersonedf51322011-02-24 03:03:46 +00001059they can arise from doing I/O in a :mod:`signal` handler. If a thread tries to
Eli Benderskyf877a7c2012-07-14 21:22:25 +03001060re-enter a buffered object which it is already accessing, a :exc:`RuntimeError`
1061is raised. Note this doesn't prohibit a different thread from entering the
Benjamin Petersonedf51322011-02-24 03:03:46 +00001062buffered object.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001063
Benjamin Petersonedf51322011-02-24 03:03:46 +00001064The above implicitly extends to text files, since the :func:`open()` function
1065will wrap a buffered object inside a :class:`TextIOWrapper`. This includes
Géry Ogam3b58a702019-09-11 16:55:13 +02001066standard streams and therefore affects the built-in :func:`print()` function as
Benjamin Petersonedf51322011-02-24 03:03:46 +00001067well.