blob: 0f1251687aeb131513a60d2ee5c966fa48e73489 [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
Georg Brandl014197c2008-04-09 18:40:51 +0000123
124.. exception:: BlockingIOError
125
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200126 This is a compatibility alias for the builtin :exc:`BlockingIOError`
127 exception.
Georg Brandl014197c2008-04-09 18:40:51 +0000128
129
130.. exception:: UnsupportedOperation
131
Antoine Pitroua787b652011-10-12 19:02:52 +0200132 An exception inheriting :exc:`OSError` and :exc:`ValueError` that is raised
Georg Brandl014197c2008-04-09 18:40:51 +0000133 when an unsupported operation is called on a stream.
134
135
Antoine Pitroub530e142010-08-30 12:41:00 +0000136In-memory streams
137^^^^^^^^^^^^^^^^^
138
Serhiy Storchakae5ea1ab2016-05-18 13:54:54 +0300139It is also possible to use a :class:`str` or :term:`bytes-like object` as a
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000140file for both reading and writing. For strings :class:`StringIO` can be used
141like a file opened in text mode. :class:`BytesIO` can be used like a file
142opened in binary mode. Both provide full read-write capabilities with random
143access.
Antoine Pitroub530e142010-08-30 12:41:00 +0000144
145
146.. seealso::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000147
Antoine Pitroub530e142010-08-30 12:41:00 +0000148 :mod:`sys`
149 contains the standard IO streams: :data:`sys.stdin`, :data:`sys.stdout`,
150 and :data:`sys.stderr`.
151
152
153Class hierarchy
154---------------
155
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000156The 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
158specify the various categories of streams, then concrete classes providing the
159standard stream implementations.
Antoine Pitroub530e142010-08-30 12:41:00 +0000160
161 .. note::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000162
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
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300166 :meth:`~IOBase.readinto` and :meth:`~IOBase.readline`.
Antoine Pitroub530e142010-08-30 12:41:00 +0000167
168At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It
169defines the basic interface to a stream. Note, however, that there is no
170separation between reading and writing to streams; implementations are allowed
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000171to raise :exc:`UnsupportedOperation` if they do not support a given operation.
Antoine Pitroub530e142010-08-30 12:41:00 +0000172
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000173The :class:`RawIOBase` ABC extends :class:`IOBase`. It deals with the reading
174and writing of bytes to a stream. :class:`FileIO` subclasses :class:`RawIOBase`
175to provide an interface to files in the machine's file system.
Antoine Pitroub530e142010-08-30 12:41:00 +0000176
177The :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
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000180readable, writable, and both readable and writable. :class:`BufferedRandom`
181provides a buffered interface to random access streams. Another
Georg Brandl682d7e02010-10-06 10:26:05 +0000182:class:`BufferedIOBase` subclass, :class:`BytesIO`, is a stream of in-memory
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000183bytes.
Antoine Pitroub530e142010-08-30 12:41:00 +0000184
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000185The :class:`TextIOBase` ABC, another subclass of :class:`IOBase`, deals with
186streams whose bytes represent text, and handles encoding and decoding to and
187from strings. :class:`TextIOWrapper`, which extends it, is a buffered text
188interface to a buffered raw stream (:class:`BufferedIOBase`). Finally,
189:class:`StringIO` is an in-memory stream for text.
Antoine Pitroub530e142010-08-30 12:41:00 +0000190
191Argument names are not part of the specification, and only the arguments of
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000192:func:`open` are intended to be used as keyword arguments.
Antoine Pitroub530e142010-08-30 12:41:00 +0000193
Andrew Svetloved636a82012-12-06 12:20:56 +0200194The following table summarizes the ABCs provided by the :mod:`io` module:
195
Georg Brandl44ea77b2013-03-28 13:28:44 +0100196.. tabularcolumns:: |l|l|L|L|
197
Andrew Svetloved636a82012-12-06 12:20:56 +0200198========================= ================== ======================== ==================================================
199ABC 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``
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530208:class:`BufferedIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``readinto``,
209 ``read1``, and ``write`` and ``readinto1``
Andrew Svetloved636a82012-12-06 12:20:56 +0200210:class:`TextIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``encoding``,
211 ``readline``, and ``errors``, and ``newlines``
212 ``write``
213========================= ================== ======================== ==================================================
214
Antoine Pitroub530e142010-08-30 12:41:00 +0000215
Georg Brandl014197c2008-04-09 18:40:51 +0000216I/O Base Classes
Antoine Pitroub530e142010-08-30 12:41:00 +0000217^^^^^^^^^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000218
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
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000224 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000228
Steve Palmer7b97ab32019-04-09 05:35:27 +0100229 Even though :class:`IOBase` does not declare :meth:`read`
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000230 or :meth:`write` because their signatures will vary, implementations and
231 clients should consider those methods part of the interface. Also,
Antoine Pitroua787b652011-10-12 19:02:52 +0200232 implementations may raise a :exc:`ValueError` (or :exc:`UnsupportedOperation`)
233 when operations they do not support are called.
Georg Brandl014197c2008-04-09 18:40:51 +0000234
235 The basic type used for binary data read from or written to a file is
Martin Panter6bb91f32016-05-28 00:41:57 +0000236 :class:`bytes`. Other :term:`bytes-like objects <bytes-like object>` are
Steve Palmer7b97ab32019-04-09 05:35:27 +0100237 accepted as method arguments too. Text I/O classes work with :class:`str` data.
Georg Brandl014197c2008-04-09 18:40:51 +0000238
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000239 Note that calling any method (even inquiries) on a closed stream is
Antoine Pitroua787b652011-10-12 19:02:52 +0200240 undefined. Implementations may raise :exc:`ValueError` in this case.
Georg Brandl014197c2008-04-09 18:40:51 +0000241
Éric Araujo3f7c0e42012-12-08 22:53:43 -0500242 :class:`IOBase` (and its subclasses) supports the iterator protocol, meaning
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300243 that an :class:`IOBase` object can be iterated over yielding the lines in a
244 stream. Lines are defined slightly differently depending on whether the
245 stream is a binary stream (yielding bytes), or a text stream (yielding
246 character strings). See :meth:`~IOBase.readline` below.
Georg Brandl014197c2008-04-09 18:40:51 +0000247
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300248 :class:`IOBase` is also a context manager and therefore supports the
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000249 :keyword:`with` statement. In this example, *file* is closed after the
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200250 :keyword:`!with` statement's suite is finished---even if an exception occurs::
Georg Brandl014197c2008-04-09 18:40:51 +0000251
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000252 with open('spam.txt', 'w') as file:
253 file.write('Spam and eggs!')
Georg Brandl014197c2008-04-09 18:40:51 +0000254
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000255 :class:`IOBase` provides these data attributes and methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000256
257 .. method:: close()
258
Christian Heimesecc42a22008-11-05 19:30:32 +0000259 Flush and close this stream. This method has no effect if the file is
Georg Brandl48310cd2009-01-03 21:18:54 +0000260 already closed. Once the file is closed, any operation on the file
Georg Brandl8569e582010-05-19 20:57:08 +0000261 (e.g. reading or writing) will raise a :exc:`ValueError`.
Antoine Pitrouf9fc08f2010-04-28 19:59:32 +0000262
263 As a convenience, it is allowed to call this method more than once;
264 only the first call, however, will have an effect.
Georg Brandl014197c2008-04-09 18:40:51 +0000265
266 .. attribute:: closed
267
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300268 ``True`` if the stream is closed.
Georg Brandl014197c2008-04-09 18:40:51 +0000269
270 .. method:: fileno()
271
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000272 Return the underlying file descriptor (an integer) of the stream if it
Antoine Pitroua787b652011-10-12 19:02:52 +0200273 exists. An :exc:`OSError` is raised if the IO object does not use a file
Georg Brandl014197c2008-04-09 18:40:51 +0000274 descriptor.
275
276 .. method:: flush()
277
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000278 Flush the write buffers of the stream if applicable. This does nothing
279 for read-only and non-blocking streams.
Georg Brandl014197c2008-04-09 18:40:51 +0000280
281 .. method:: isatty()
282
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000283 Return ``True`` if the stream is interactive (i.e., connected to
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000284 a terminal/tty device).
Georg Brandl014197c2008-04-09 18:40:51 +0000285
286 .. method:: readable()
287
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200288 Return ``True`` if the stream can be read from. If ``False``, :meth:`read`
Antoine Pitroua787b652011-10-12 19:02:52 +0200289 will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000290
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300291 .. method:: readline(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000292
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300293 Read and return one line from the stream. If *size* is specified, at
294 most *size* bytes will be read.
Georg Brandl014197c2008-04-09 18:40:51 +0000295
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000296 The line terminator is always ``b'\n'`` for binary files; for text files,
Zachary Ware0069eac2014-07-18 09:11:48 -0500297 the *newline* argument to :func:`open` can be used to select the line
Georg Brandl014197c2008-04-09 18:40:51 +0000298 terminator(s) recognized.
299
Georg Brandl3dd33882009-06-01 17:35:27 +0000300 .. method:: readlines(hint=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000301
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000302 Read and return a list of lines from the stream. *hint* can be specified
303 to control the number of lines read: no more lines will be read if the
304 total size (in bytes/characters) of all lines so far exceeds *hint*.
Georg Brandl014197c2008-04-09 18:40:51 +0000305
Ezio Melottied3cd7e2013-04-15 19:08:31 +0300306 Note that it's already possible to iterate on file objects using ``for
307 line in file: ...`` without calling ``file.readlines()``.
308
Martin Panterdb4220e2015-09-11 03:58:30 +0000309 .. method:: seek(offset[, whence])
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000310
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000311 Change the stream position to the given byte *offset*. *offset* is
Martin Panterdb4220e2015-09-11 03:58:30 +0000312 interpreted relative to the position indicated by *whence*. The default
313 value for *whence* is :data:`SEEK_SET`. Values for *whence* are:
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000314
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000315 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
316 *offset* should be zero or positive
317 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
318 be negative
319 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
320 negative
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000321
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000322 Return the new absolute position.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000323
Raymond Hettinger35a88362009-04-09 00:08:24 +0000324 .. versionadded:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +0000325 The ``SEEK_*`` constants.
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000326
Jesus Cea94363612012-06-22 18:32:07 +0200327 .. versionadded:: 3.3
328 Some operating systems could support additional values, like
329 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`. The valid values
330 for a file could depend on it being open in text or binary mode.
331
Georg Brandl014197c2008-04-09 18:40:51 +0000332 .. method:: seekable()
333
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000334 Return ``True`` if the stream supports random access. If ``False``,
Antoine Pitroua787b652011-10-12 19:02:52 +0200335 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000336
337 .. method:: tell()
338
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000339 Return the current stream position.
Georg Brandl014197c2008-04-09 18:40:51 +0000340
Georg Brandl3dd33882009-06-01 17:35:27 +0000341 .. method:: truncate(size=None)
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000342
Antoine Pitrou2016dc92010-05-29 12:08:25 +0000343 Resize the stream to the given *size* in bytes (or the current position
344 if *size* is not specified). The current stream position isn't changed.
345 This resizing can extend or reduce the current file size. In case of
346 extension, the contents of the new file area depend on the platform
Steve Dowerfe0a41a2015-03-20 19:50:46 -0700347 (on most systems, additional bytes are zero-filled). The new file size
348 is returned.
349
Emmanuel Arias522630a2019-02-15 16:02:38 -0300350 .. versionchanged:: 3.5
351 Windows will now zero-fill files when extending.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000352
Georg Brandl014197c2008-04-09 18:40:51 +0000353 .. method:: writable()
354
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000355 Return ``True`` if the stream supports writing. If ``False``,
Antoine Pitroua787b652011-10-12 19:02:52 +0200356 :meth:`write` and :meth:`truncate` will raise :exc:`OSError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000357
358 .. method:: writelines(lines)
359
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000360 Write a list of lines to the stream. Line separators are not added, so it
361 is usual for each of the lines provided to have a line separator at the
362 end.
Georg Brandl014197c2008-04-09 18:40:51 +0000363
Benjamin Petersonef8abfc2014-06-14 18:51:34 -0700364 .. method:: __del__()
365
366 Prepare for object destruction. :class:`IOBase` provides a default
367 implementation of this method that calls the instance's
368 :meth:`~IOBase.close` method.
369
Georg Brandl014197c2008-04-09 18:40:51 +0000370
371.. class:: RawIOBase
372
373 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
374 public constructor.
375
Antoine Pitrou497a7672009-09-17 17:18:01 +0000376 Raw binary I/O typically provides low-level access to an underlying OS
377 device or API, and does not try to encapsulate it in high-level primitives
378 (this is left to Buffered I/O and Text I/O, described later in this page).
379
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000380 In addition to the attributes and methods from :class:`IOBase`,
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300381 :class:`RawIOBase` provides the following methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000382
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300383 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000384
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300385 Read up to *size* bytes from the object and return them. As a convenience,
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530386 if *size* is unspecified or -1, all bytes until EOF are returned.
387 Otherwise, only one system call is ever made. Fewer than *size* bytes may
388 be returned if the operating system call returns fewer than *size* bytes.
Antoine Pitrou78ddbe62009-10-01 16:24:45 +0000389
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300390 If 0 bytes are returned, and *size* was not 0, this indicates end of file.
Antoine Pitrou78ddbe62009-10-01 16:24:45 +0000391 If the object is in non-blocking mode and no bytes are available,
392 ``None`` is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000393
Sanyam Khurana1b74f9b2017-12-11 19:12:09 +0530394 The default implementation defers to :meth:`readall` and
395 :meth:`readinto`.
396
Benjamin Petersonb47aace2008-04-09 21:38:38 +0000397 .. method:: readall()
Georg Brandl014197c2008-04-09 18:40:51 +0000398
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000399 Read and return all the bytes from the stream until EOF, using multiple
400 calls to the stream if necessary.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000401
402 .. method:: readinto(b)
403
Martin Panter6bb91f32016-05-28 00:41:57 +0000404 Read bytes into a pre-allocated, writable
405 :term:`bytes-like object` *b*, and return the
Steve Palmer7b97ab32019-04-09 05:35:27 +0100406 number of bytes read. For example, *b* might be a :class:`bytearray`.
407 If the object is in non-blocking mode and no bytes
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700408 are available, ``None`` is returned.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000409
410 .. method:: write(b)
411
Martin Panter6bb91f32016-05-28 00:41:57 +0000412 Write the given :term:`bytes-like object`, *b*, to the
413 underlying raw stream, and return the number of
414 bytes written. This can be less than the length of *b* in
415 bytes, depending on specifics of the underlying raw
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300416 stream, and especially if it is in non-blocking mode. ``None`` is
417 returned if the raw stream is set not to block and no single byte could
Martin Panter6bb91f32016-05-28 00:41:57 +0000418 be readily written to it. The caller may release or mutate *b* after
419 this method returns, so the implementation should only access *b*
420 during the method call.
Georg Brandl014197c2008-04-09 18:40:51 +0000421
422
Georg Brandl014197c2008-04-09 18:40:51 +0000423.. class:: BufferedIOBase
424
Antoine Pitrou497a7672009-09-17 17:18:01 +0000425 Base class for binary streams that support some kind of buffering.
426 It inherits :class:`IOBase`. There is no public constructor.
Georg Brandl014197c2008-04-09 18:40:51 +0000427
Antoine Pitrou497a7672009-09-17 17:18:01 +0000428 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
429 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
430 input as requested or to consume all given output, at the expense of
431 making perhaps more than one system call.
432
433 In addition, those methods can raise :exc:`BlockingIOError` if the
434 underlying raw stream is in non-blocking mode and cannot take or give
435 enough data; unlike their :class:`RawIOBase` counterparts, they will
436 never return ``None``.
437
438 Besides, the :meth:`read` method does not have a default
Georg Brandl014197c2008-04-09 18:40:51 +0000439 implementation that defers to :meth:`readinto`.
440
Antoine Pitrou497a7672009-09-17 17:18:01 +0000441 A typical :class:`BufferedIOBase` implementation should not inherit from a
442 :class:`RawIOBase` implementation, but wrap one, like
443 :class:`BufferedWriter` and :class:`BufferedReader` do.
Georg Brandl014197c2008-04-09 18:40:51 +0000444
Senthil Kumarana6bac952011-07-04 11:28:30 -0700445 :class:`BufferedIOBase` provides or overrides these methods and attribute in
446 addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000447
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000448 .. attribute:: raw
449
450 The underlying raw stream (a :class:`RawIOBase` instance) that
451 :class:`BufferedIOBase` deals with. This is not part of the
452 :class:`BufferedIOBase` API and may not exist on some implementations.
453
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000454 .. method:: detach()
455
456 Separate the underlying raw stream from the buffer and return it.
457
458 After the raw stream has been detached, the buffer is in an unusable
459 state.
460
461 Some buffers, like :class:`BytesIO`, do not have the concept of a single
462 raw stream to return from this method. They raise
463 :exc:`UnsupportedOperation`.
464
Benjamin Petersonedc36472009-05-01 20:48:14 +0000465 .. versionadded:: 3.1
466
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300467 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000468
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300469 Read and return up to *size* bytes. If the argument is omitted, ``None``,
470 or negative, data is read and returned until EOF is reached. An empty
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300471 :class:`bytes` object is returned if the stream is already at EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000472
473 If the argument is positive, and the underlying raw stream is not
474 interactive, multiple raw reads may be issued to satisfy the byte count
475 (unless EOF is reached first). But for interactive raw streams, at most
476 one raw read will be issued, and a short result does not imply that EOF is
477 imminent.
478
Antoine Pitrou497a7672009-09-17 17:18:01 +0000479 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
480 non blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000481
Martin Panterccb2c0e2016-10-20 23:48:14 +0000482 .. method:: read1([size])
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000483
Benjamin Petersona96fea02014-06-22 14:17:44 -0700484 Read and return up to *size* bytes, with at most one call to the
485 underlying raw stream's :meth:`~RawIOBase.read` (or
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700486 :meth:`~RawIOBase.readinto`) method. This can be useful if you are
487 implementing your own buffering on top of a :class:`BufferedIOBase`
488 object.
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000489
Martin Panter4e946792016-10-21 23:00:10 +0000490 If *size* is ``-1`` (the default), an arbitrary number of bytes are
Martin Panterccb2c0e2016-10-20 23:48:14 +0000491 returned (more than zero unless EOF is reached).
492
Georg Brandl014197c2008-04-09 18:40:51 +0000493 .. method:: readinto(b)
494
Martin Panter6bb91f32016-05-28 00:41:57 +0000495 Read bytes into a pre-allocated, writable
496 :term:`bytes-like object` *b* and return the number of bytes read.
Steve Palmer7b97ab32019-04-09 05:35:27 +0100497 For example, *b* might be a :class:`bytearray`.
Georg Brandl014197c2008-04-09 18:40:51 +0000498
499 Like :meth:`read`, multiple reads may be issued to the underlying raw
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300500 stream, unless the latter is interactive.
Georg Brandl014197c2008-04-09 18:40:51 +0000501
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700502 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
503 blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000504
Benjamin Petersona96fea02014-06-22 14:17:44 -0700505 .. method:: readinto1(b)
506
Martin Panter6bb91f32016-05-28 00:41:57 +0000507 Read bytes into a pre-allocated, writable
508 :term:`bytes-like object` *b*, using at most one call to
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700509 the underlying raw stream's :meth:`~RawIOBase.read` (or
510 :meth:`~RawIOBase.readinto`) method. Return the number of bytes read.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700511
Benjamin Peterson2a1a4902014-06-22 14:19:07 -0700512 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non
513 blocking-mode, and has no data available at the moment.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700514
515 .. versionadded:: 3.5
516
Georg Brandl014197c2008-04-09 18:40:51 +0000517 .. method:: write(b)
518
Martin Panter6bb91f32016-05-28 00:41:57 +0000519 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
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300521 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000525
Antoine Pitrou497a7672009-09-17 17:18:01 +0000526 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000529
Martin Panter6bb91f32016-05-28 00:41:57 +0000530 The caller may release or mutate *b* after this method returns,
531 so the implementation should only access *b* during the method call.
532
Georg Brandl014197c2008-04-09 18:40:51 +0000533
Benjamin Petersonaa069002009-01-23 03:26:36 +0000534Raw File I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000535^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000536
Ross Lagerwall59142db2011-10-31 20:34:46 +0200537.. class:: FileIO(name, mode='r', closefd=True, opener=None)
Benjamin Petersonaa069002009-01-23 03:26:36 +0000538
Antoine Pitrou497a7672009-09-17 17:18:01 +0000539 :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
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300545 * a character string or :class:`bytes` object representing the path to the
Serhiy Storchaka4adf01c2016-10-19 18:30:05 +0300546 file which will be opened. In this case closefd must be ``True`` (the default)
Robert Collins933430a2014-10-18 13:32:43 +1300547 otherwise an error will be raised.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000548 * an integer representing the number of an existing OS-level file descriptor
Robert Collins933430a2014-10-18 13:32:43 +1300549 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``.
Benjamin Petersonaa069002009-01-23 03:26:36 +0000552
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100553 The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading
Charles-François Natalid612de12012-01-14 11:51:00 +0100554 (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.
Benjamin Petersonaa069002009-01-23 03:26:36 +0000560
Antoine Pitrou497a7672009-09-17 17:18:01 +0000561 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
Ross Lagerwall59142db2011-10-31 20:34:46 +0200564 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
Victor Stinnerdaf45552013-08-28 00:53:59 +0200570 The newly created file is :ref:`non-inheritable <fd_inheritance>`.
571
Éric Araujo8f423c92012-11-03 17:06:52 -0400572 See the :func:`open` built-in function for examples on using the *opener*
573 parameter.
574
Ross Lagerwall59142db2011-10-31 20:34:46 +0200575 .. versionchanged:: 3.3
576 The *opener* parameter was added.
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100577 The ``'x'`` mode was added.
Ross Lagerwall59142db2011-10-31 20:34:46 +0200578
Victor Stinnerdaf45552013-08-28 00:53:59 +0200579 .. versionchanged:: 3.4
580 The file is now non-inheritable.
581
Benjamin Petersonaa069002009-01-23 03:26:36 +0000582 In addition to the attributes and methods from :class:`IOBase` and
583 :class:`RawIOBase`, :class:`FileIO` provides the following data
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300584 attributes:
Benjamin Petersonaa069002009-01-23 03:26:36 +0000585
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
Benjamin Petersonaa069002009-01-23 03:26:36 +0000595
596Buffered Streams
Antoine Pitroub530e142010-08-30 12:41:00 +0000597^^^^^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000598
Antoine Pitroubed81c82010-12-03 19:14:17 +0000599Buffered I/O streams provide a higher-level interface to an I/O device
600than raw I/O does.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000601
Georg Brandl014197c2008-04-09 18:40:51 +0000602.. class:: BytesIO([initial_bytes])
603
604 A stream implementation using an in-memory bytes buffer. It inherits
Serhiy Storchakac057c382015-02-03 02:00:18 +0200605 :class:`BufferedIOBase`. The buffer is discarded when the
606 :meth:`~IOBase.close` method is called.
Georg Brandl014197c2008-04-09 18:40:51 +0000607
Martin Panter6bb91f32016-05-28 00:41:57 +0000608 The optional argument *initial_bytes* is a :term:`bytes-like object` that
609 contains initial data.
Georg Brandl014197c2008-04-09 18:40:51 +0000610
611 :class:`BytesIO` provides or overrides these methods in addition to those
612 from :class:`BufferedIOBase` and :class:`IOBase`:
613
Antoine Pitrou972ee132010-09-06 18:48:21 +0000614 .. 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
Serhiy Storchakac057c382015-02-03 02:00:18 +0200628 resized or closed.
Antoine Pitrou972ee132010-09-06 18:48:21 +0000629
630 .. versionadded:: 3.2
631
Georg Brandl014197c2008-04-09 18:40:51 +0000632 .. method:: getvalue()
633
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300634 Return :class:`bytes` containing the entire contents of the buffer.
Georg Brandl014197c2008-04-09 18:40:51 +0000635
Serhiy Storchakac057c382015-02-03 02:00:18 +0200636
Martin Panterccb2c0e2016-10-20 23:48:14 +0000637 .. method:: read1([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000638
Martin Panterccb2c0e2016-10-20 23:48:14 +0000639 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`.
Georg Brandl014197c2008-04-09 18:40:51 +0000640
Martin Panterccb2c0e2016-10-20 23:48:14 +0000641 .. versionchanged:: 3.7
642 The *size* argument is now optional.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700643
Martin Panterccb2c0e2016-10-20 23:48:14 +0000644 .. method:: readinto1(b)
645
646 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`.
Benjamin Petersona96fea02014-06-22 14:17:44 -0700647
648 .. versionadded:: 3.5
Georg Brandl014197c2008-04-09 18:40:51 +0000649
Georg Brandl3dd33882009-06-01 17:35:27 +0000650.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000651
Antoine Pitrou497a7672009-09-17 17:18:01 +0000652 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000657
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
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300665 .. method:: peek([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000666
Benjamin Petersonc43a26d2009-06-16 23:09:24 +0000667 Return bytes from the stream without advancing the position. At most one
Benjamin Peterson2a8b54d2009-06-14 14:37:23 +0000668 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000670
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300671 .. method:: read([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000672
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300673 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000675
Martin Panterccb2c0e2016-10-20 23:48:14 +0000676 .. method:: read1([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000677
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300678 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000680 Otherwise, one raw stream read call is made.
681
Martin Panterccb2c0e2016-10-20 23:48:14 +0000682 .. versionchanged:: 3.7
683 The *size* argument is now optional.
684
Georg Brandl014197c2008-04-09 18:40:51 +0000685
Georg Brandl3dd33882009-06-01 17:35:27 +0000686.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000687
Antoine Pitrou497a7672009-09-17 17:18:01 +0000688 A buffer providing higher-level access to a writeable, sequential
689 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300690 When writing to this object, data is normally placed into an internal
Antoine Pitrou497a7672009-09-17 17:18:01 +0000691 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000698
699 The constructor creates a :class:`BufferedWriter` for the given writeable
700 *raw* stream. If the *buffer_size* is not given, it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000701 :data:`DEFAULT_BUFFER_SIZE`.
702
Georg Brandl014197c2008-04-09 18:40:51 +0000703 :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
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000709 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000710
711 .. method:: write(b)
712
Martin Panter6bb91f32016-05-28 00:41:57 +0000713 Write the :term:`bytes-like object`, *b*, and return the
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300714 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.
Georg Brandl014197c2008-04-09 18:40:51 +0000717
718
Georg Brandl3dd33882009-06-01 17:35:27 +0000719.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000720
721 A buffered interface to random access streams. It inherits
Christopher Headb13552c2019-04-12 08:50:41 -0700722 :class:`BufferedReader` and :class:`BufferedWriter`.
Georg Brandl014197c2008-04-09 18:40:51 +0000723
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000724 The constructor creates a reader and writer for a seekable raw stream, given
Georg Brandl014197c2008-04-09 18:40:51 +0000725 in the first argument. If the *buffer_size* is omitted it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000726 :data:`DEFAULT_BUFFER_SIZE`.
727
Georg Brandl014197c2008-04-09 18:40:51 +0000728 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
Christopher Headb13552c2019-04-12 08:50:41 -0700729 :class:`BufferedWriter` can do. In addition, :meth:`seek` and :meth:`tell`
730 are guaranteed to be implemented.
Georg Brandl014197c2008-04-09 18:40:51 +0000731
732
Antoine Pitrou13d28952011-08-20 19:48:43 +0200733.. 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
Antoine Pitrou13d28952011-08-20 19:48:43 +0200743 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
744 except for :meth:`~BufferedIOBase.detach`, which raises
745 :exc:`UnsupportedOperation`.
746
747 .. warning::
Larry Hastings3732ed22014-03-15 21:13:56 -0700748
Antoine Pitrou13d28952011-08-20 19:48:43 +0200749 :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
Georg Brandl014197c2008-04-09 18:40:51 +0000754Text I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000755^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000756
757.. class:: TextIOBase
758
759 Base class for text streams. This class provides a character and line based
Steve Palmer7b97ab32019-04-09 05:35:27 +0100760 interface to stream I/O. It inherits :class:`IOBase`.
Georg Brandl014197c2008-04-09 18:40:51 +0000761 There is no public constructor.
762
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000763 :class:`TextIOBase` provides or overrides these data attributes and
764 methods in addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000765
766 .. attribute:: encoding
767
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000768 The name of the encoding used to decode the stream's bytes into
Georg Brandl014197c2008-04-09 18:40:51 +0000769 strings, and to encode strings into bytes.
770
Benjamin Peterson0926ad12009-06-06 18:02:12 +0000771 .. attribute:: errors
772
773 The error setting of the decoder or encoder.
774
Georg Brandl014197c2008-04-09 18:40:51 +0000775 .. attribute:: newlines
776
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000777 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrou497a7672009-09-17 17:18:01 +0000778 translated so far. Depending on the implementation and the initial
779 constructor flags, this may not be available.
Georg Brandl014197c2008-04-09 18:40:51 +0000780
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000781 .. attribute:: buffer
782
783 The underlying binary buffer (a :class:`BufferedIOBase` instance) that
784 :class:`TextIOBase` deals with. This is not part of the
Eli Benderskyf877a7c2012-07-14 21:22:25 +0300785 :class:`TextIOBase` API and may not exist in some implementations.
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000786
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000787 .. method:: detach()
788
Antoine Pitrou497a7672009-09-17 17:18:01 +0000789 Separate the underlying binary buffer from the :class:`TextIOBase` and
790 return it.
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000791
792 After the underlying buffer has been detached, the :class:`TextIOBase` is
793 in an unusable state.
794
795 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
796 have the concept of an underlying buffer and calling this method will
797 raise :exc:`UnsupportedOperation`.
798
Benjamin Petersonedc36472009-05-01 20:48:14 +0000799 .. versionadded:: 3.1
800
Andrés Delfinob6bb77c2018-07-07 17:17:16 -0300801 .. method:: read(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000802
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300803 Read and return at most *size* characters from the stream as a single
804 :class:`str`. If *size* is negative or ``None``, reads until EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000805
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300806 .. method:: readline(size=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000807
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000808 Read until newline or EOF and return a single ``str``. If the stream is
809 already at EOF, an empty string is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000810
Serhiy Storchaka3c411542013-09-16 23:18:10 +0300811 If *size* is specified, at most *size* characters will be read.
Antoine Pitrou707bd4e2012-07-25 22:38:33 +0200812
Martin Panterdb4220e2015-09-11 03:58:30 +0000813 .. method:: seek(offset[, whence])
Antoine Pitrouf49d1522012-01-21 20:20:49 +0100814
Martin Panterdb4220e2015-09-11 03:58:30 +0000815 Change the stream position to the given *offset*. Behaviour depends on
816 the *whence* parameter. The default value for *whence* is
817 :data:`SEEK_SET`.
Antoine Pitrouf49d1522012-01-21 20:20:49 +0100818
819 * :data:`SEEK_SET` or ``0``: seek from the start of the stream
820 (the default); *offset* must either be a number returned by
821 :meth:`TextIOBase.tell`, or zero. Any other *offset* value
822 produces undefined behaviour.
823 * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
824 *offset* must be zero, which is a no-operation (all other values
825 are unsupported).
826 * :data:`SEEK_END` or ``2``: seek to the end of the stream;
827 *offset* must be zero (all other values are unsupported).
828
829 Return the new absolute position as an opaque number.
830
831 .. versionadded:: 3.1
832 The ``SEEK_*`` constants.
833
834 .. method:: tell()
835
836 Return the current stream position as an opaque number. The number
837 does not usually represent a number of bytes in the underlying
838 binary storage.
839
Georg Brandl014197c2008-04-09 18:40:51 +0000840 .. method:: write(s)
841
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000842 Write the string *s* to the stream and return the number of characters
843 written.
Georg Brandl014197c2008-04-09 18:40:51 +0000844
845
Antoine Pitrou664091b2011-07-23 22:00:03 +0200846.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, \
847 line_buffering=False, write_through=False)
Georg Brandl014197c2008-04-09 18:40:51 +0000848
Antoine Pitrou497a7672009-09-17 17:18:01 +0000849 A buffered text stream over a :class:`BufferedIOBase` binary stream.
Georg Brandl014197c2008-04-09 18:40:51 +0000850 It inherits :class:`TextIOBase`.
851
852 *encoding* gives the name of the encoding that the stream will be decoded or
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300853 encoded with. It defaults to
854 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`.
Georg Brandl014197c2008-04-09 18:40:51 +0000855
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000856 *errors* is an optional string that specifies how encoding and decoding
857 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
858 exception if there is an encoding error (the default of ``None`` has the same
859 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
860 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Serhiy Storchaka07985ef2015-01-25 22:56:57 +0200861 (such as ``'?'``) to be inserted where there is malformed data.
862 ``'backslashreplace'`` causes malformed data to be replaced by a
863 backslashed escape sequence. When writing, ``'xmlcharrefreplace'``
864 (replace with the appropriate XML character reference) or ``'namereplace'``
865 (replace with ``\N{...}`` escape sequences) can be used. Any other error
866 handling name that has been registered with
Serhiy Storchaka166ebc42014-11-25 13:57:17 +0200867 :func:`codecs.register_error` is also valid.
Georg Brandl014197c2008-04-09 18:40:51 +0000868
R David Murray1b00f252012-08-15 10:43:58 -0400869 .. index::
870 single: universal newlines; io.TextIOWrapper class
871
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200872 *newline* controls how line endings are handled. It can be ``None``,
873 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
874
R David Murray1b00f252012-08-15 10:43:58 -0400875 * When reading input from the stream, if *newline* is ``None``,
R David Murrayee0a9452012-08-15 11:05:36 -0400876 :term:`universal newlines` mode is enabled. Lines in the input can end in
877 ``'\n'``, ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'``
878 before being returned to the caller. If it is ``''``, universal newlines
879 mode is enabled, but line endings are returned to the caller untranslated.
880 If it has any of the other legal values, input lines are only terminated
881 by the given string, and the line ending is returned to the caller
882 untranslated.
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200883
Georg Brandl296d1be2012-08-14 09:39:07 +0200884 * When writing output to the stream, if *newline* is ``None``, any ``'\n'``
885 characters written are translated to the system default line separator,
886 :data:`os.linesep`. If *newline* is ``''`` or ``'\n'``, no translation
887 takes place. If *newline* is any of the other legal values, any ``'\n'``
888 characters written are translated to the given string.
Georg Brandl014197c2008-04-09 18:40:51 +0000889
890 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
Elena Oat7ffd4c52018-05-14 17:48:01 +0300891 write contains a newline character or a carriage return.
Georg Brandl014197c2008-04-09 18:40:51 +0000892
Antoine Pitrou664091b2011-07-23 22:00:03 +0200893 If *write_through* is ``True``, calls to :meth:`write` are guaranteed
894 not to be buffered: any data written on the :class:`TextIOWrapper`
895 object is immediately handled to its underlying binary *buffer*.
896
897 .. versionchanged:: 3.3
898 The *write_through* argument has been added.
899
Victor Stinnerf86a5e82012-06-05 13:43:22 +0200900 .. versionchanged:: 3.3
901 The default *encoding* is now ``locale.getpreferredencoding(False)``
902 instead of ``locale.getpreferredencoding()``. Don't change temporary the
903 locale encoding using :func:`locale.setlocale`, use the current locale
904 encoding instead of the user preferred encoding.
905
INADA Naoki507434f2017-12-21 09:59:53 +0900906 :class:`TextIOWrapper` provides these members in addition to those of
Georg Brandl014197c2008-04-09 18:40:51 +0000907 :class:`TextIOBase` and its parents:
908
Georg Brandl014197c2008-04-09 18:40:51 +0000909 .. attribute:: line_buffering
910
911 Whether line buffering is enabled.
Georg Brandl48310cd2009-01-03 21:18:54 +0000912
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200913 .. attribute:: write_through
914
915 Whether writes are passed immediately to the underlying binary
916 buffer.
917
918 .. versionadded:: 3.7
919
INADA Naoki507434f2017-12-21 09:59:53 +0900920 .. method:: reconfigure(*[, encoding][, errors][, newline][, \
921 line_buffering][, write_through])
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200922
INADA Naoki507434f2017-12-21 09:59:53 +0900923 Reconfigure this text stream using new settings for *encoding*,
924 *errors*, *newline*, *line_buffering* and *write_through*.
925
926 Parameters not specified keep current settings, except
927 ``errors='strict`` is used when *encoding* is specified but
928 *errors* is not specified.
929
930 It is not possible to change the encoding or newline if some data
931 has already been read from the stream. On the other hand, changing
932 encoding after write is possible.
Antoine Pitrou3c2817b2017-06-03 12:32:28 +0200933
934 This method does an implicit stream flush before setting the
935 new parameters.
936
937 .. versionadded:: 3.7
938
Georg Brandl014197c2008-04-09 18:40:51 +0000939
Antoine Pitroube7ff9f2014-02-02 22:48:25 +0100940.. class:: StringIO(initial_value='', newline='\\n')
Georg Brandl014197c2008-04-09 18:40:51 +0000941
Serhiy Storchakac057c382015-02-03 02:00:18 +0200942 An in-memory stream for text I/O. The text buffer is discarded when the
943 :meth:`~IOBase.close` method is called.
Georg Brandl014197c2008-04-09 18:40:51 +0000944
Martin Pantercfad5432015-10-10 03:01:20 +0000945 The initial value of the buffer can be set by providing *initial_value*.
946 If newline translation is enabled, newlines will be encoded as if by
947 :meth:`~TextIOBase.write`. The stream is positioned at the start of
948 the buffer.
949
950 The *newline* argument works like that of :class:`TextIOWrapper`.
951 The default is to consider only ``\n`` characters as ends of lines and
952 to do no newline translation. If *newline* is set to ``None``,
953 newlines are written as ``\n`` on all platforms, but universal
954 newline decoding is still performed when reading.
Georg Brandl014197c2008-04-09 18:40:51 +0000955
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000956 :class:`StringIO` provides this method in addition to those from
Antoine Pitroub530e142010-08-30 12:41:00 +0000957 :class:`TextIOBase` and its parents:
Georg Brandl014197c2008-04-09 18:40:51 +0000958
959 .. method:: getvalue()
960
Serhiy Storchakac057c382015-02-03 02:00:18 +0200961 Return a ``str`` containing the entire contents of the buffer.
Martin Pantercfad5432015-10-10 03:01:20 +0000962 Newlines are decoded as if by :meth:`~TextIOBase.read`, although
963 the stream position is not changed.
Georg Brandl014197c2008-04-09 18:40:51 +0000964
Georg Brandl2932d932008-05-30 06:27:09 +0000965 Example usage::
966
967 import io
968
969 output = io.StringIO()
970 output.write('First line.\n')
971 print('Second line.', file=output)
972
973 # Retrieve file contents -- this will be
974 # 'First line.\nSecond line.\n'
975 contents = output.getvalue()
976
Georg Brandl48310cd2009-01-03 21:18:54 +0000977 # Close object and discard memory buffer --
Georg Brandl2932d932008-05-30 06:27:09 +0000978 # .getvalue() will now raise an exception.
979 output.close()
Georg Brandl014197c2008-04-09 18:40:51 +0000980
Antoine Pitroub530e142010-08-30 12:41:00 +0000981
R David Murray1b00f252012-08-15 10:43:58 -0400982.. index::
983 single: universal newlines; io.IncrementalNewlineDecoder class
984
Georg Brandl014197c2008-04-09 18:40:51 +0000985.. class:: IncrementalNewlineDecoder
986
R David Murray1b00f252012-08-15 10:43:58 -0400987 A helper codec that decodes newlines for :term:`universal newlines` mode.
988 It inherits :class:`codecs.IncrementalDecoder`.
Georg Brandl014197c2008-04-09 18:40:51 +0000989
Antoine Pitroubed81c82010-12-03 19:14:17 +0000990
Antoine Pitroubed81c82010-12-03 19:14:17 +0000991Performance
Benjamin Petersonedf51322011-02-24 03:03:46 +0000992-----------
993
994This section discusses the performance of the provided concrete I/O
995implementations.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000996
997Binary I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +0000998^^^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +0000999
Benjamin Petersonedf51322011-02-24 03:03:46 +00001000By reading and writing only large chunks of data even when the user asks for a
1001single byte, buffered I/O hides any inefficiency in calling and executing the
1002operating system's unbuffered I/O routines. The gain depends on the OS and the
1003kind of I/O which is performed. For example, on some modern OSes such as Linux,
1004unbuffered disk I/O can be as fast as buffered I/O. The bottom line, however,
1005is that buffered I/O offers predictable performance regardless of the platform
Eli Benderskyf877a7c2012-07-14 21:22:25 +03001006and the backing device. Therefore, it is almost always preferable to use
1007buffered I/O rather than unbuffered I/O for binary data.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001008
1009Text I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +00001010^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +00001011
1012Text I/O over a binary storage (such as a file) is significantly slower than
Benjamin Petersonedf51322011-02-24 03:03:46 +00001013binary I/O over the same storage, because it requires conversions between
1014unicode and binary data using a character codec. This can become noticeable
1015handling huge amounts of text data like large log files. Also,
1016:meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both quite slow
1017due to the reconstruction algorithm used.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001018
1019:class:`StringIO`, however, is a native in-memory unicode container and will
1020exhibit similar speed to :class:`BytesIO`.
1021
1022Multi-threading
1023^^^^^^^^^^^^^^^
1024
Benjamin Petersonedf51322011-02-24 03:03:46 +00001025:class:`FileIO` objects are thread-safe to the extent that the operating system
1026calls (such as ``read(2)`` under Unix) they wrap are thread-safe too.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001027
1028Binary buffered objects (instances of :class:`BufferedReader`,
1029:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
1030protect their internal structures using a lock; it is therefore safe to call
1031them from multiple threads at once.
1032
1033:class:`TextIOWrapper` objects are not thread-safe.
1034
1035Reentrancy
1036^^^^^^^^^^
1037
1038Binary buffered objects (instances of :class:`BufferedReader`,
1039:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
1040are not reentrant. While reentrant calls will not happen in normal situations,
Benjamin Petersonedf51322011-02-24 03:03:46 +00001041they can arise from doing I/O in a :mod:`signal` handler. If a thread tries to
Eli Benderskyf877a7c2012-07-14 21:22:25 +03001042re-enter a buffered object which it is already accessing, a :exc:`RuntimeError`
1043is raised. Note this doesn't prohibit a different thread from entering the
Benjamin Petersonedf51322011-02-24 03:03:46 +00001044buffered object.
Antoine Pitroubed81c82010-12-03 19:14:17 +00001045
Benjamin Petersonedf51322011-02-24 03:03:46 +00001046The above implicitly extends to text files, since the :func:`open()` function
1047will wrap a buffered object inside a :class:`TextIOWrapper`. This includes
1048standard streams and therefore affects the built-in function :func:`print()` as
1049well.