blob: 09e050196cec5c8c579be8134cfc368a4a36c254 [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.
6.. moduleauthor:: Guido van Rossum <guido@python.org>
7.. moduleauthor:: Mike Verdone <mike.verdone@gmail.com>
8.. moduleauthor:: Mark Russell <mark.russell@zen.co.uk>
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +00009.. moduleauthor:: Antoine Pitrou <solipsis@pitrou.net>
10.. moduleauthor:: Amaury Forgeot d'Arc <amauryfa@gmail.com>
Benjamin Petersonef9f2bd2009-05-01 20:45:43 +000011.. moduleauthor:: Benjamin Peterson <benjamin@python.org>
Benjamin Peterson058e31e2009-01-16 03:54:08 +000012.. sectionauthor:: Benjamin Peterson <benjamin@python.org>
Georg Brandl014197c2008-04-09 18:40:51 +000013
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000014.. _io-overview:
15
Antoine Pitroub530e142010-08-30 12:41:00 +000016Overview
17--------
Georg Brandl014197c2008-04-09 18:40:51 +000018
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000019The :mod:`io` module provides Python's main facilities for dealing for various
20types of I/O. There are three main types of I/O: *text I/O*, *binary I/O*, *raw
21I/O*. These are generic categories, and various backing stores can be used for
22each of them. Concrete objects belonging to any of these categories will often
23be called *streams*; another common term is *file-like objects*.
Georg Brandl014197c2008-04-09 18:40:51 +000024
Antoine Pitroub530e142010-08-30 12:41:00 +000025Independently of its category, each concrete stream object will also have
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000026various capabilities: it can be read-only, write-only, or read-write. It can
27also allow arbitrary random access (seeking forwards or backwards to any
28location), or only sequential access (for example in the case of a socket or
29pipe).
Georg Brandl014197c2008-04-09 18:40:51 +000030
Antoine Pitroub530e142010-08-30 12:41:00 +000031All streams are careful about the type of data you give to them. For example
32giving a :class:`str` object to the ``write()`` method of a binary stream
33will raise a ``TypeError``. So will giving a :class:`bytes` object to the
34``write()`` method of a text stream.
Georg Brandl014197c2008-04-09 18:40:51 +000035
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000036
Antoine Pitroub530e142010-08-30 12:41:00 +000037Text I/O
38^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +000039
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000040Text I/O expects and produces :class:`str` objects. This means that whenever
41the backing store is natively made of bytes (such as in the case of a file),
42encoding and decoding of data is made transparently as well as optional
43translation of platform-specific newline characters.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000044
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000045The easiest way to create a text stream is with :meth:`open()`, optionally
46specifying an encoding::
Antoine Pitroub530e142010-08-30 12:41:00 +000047
48 f = open("myfile.txt", "r", encoding="utf-8")
49
50In-memory text streams are also available as :class:`StringIO` objects::
51
52 f = io.StringIO("some initial text data")
53
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000054The text stream API is described in detail in the documentation for the
55:class:`TextIOBase`.
Antoine Pitroub530e142010-08-30 12:41:00 +000056
Antoine Pitroub530e142010-08-30 12:41:00 +000057
58Binary I/O
59^^^^^^^^^^
60
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000061Binary I/O (also called *buffered I/O*) expects and produces :class:`bytes`
62objects. No encoding, decoding, or newline translation is performed. This
63category of streams can be used for all kinds of non-text data, and also when
64manual control over the handling of text data is desired.
Antoine Pitroub530e142010-08-30 12:41:00 +000065
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000066The easiest way to create a binary stream is with :meth:`open()` with ``'b'`` in
67the mode string::
Antoine Pitroub530e142010-08-30 12:41:00 +000068
69 f = open("myfile.jpg", "rb")
70
71In-memory binary streams are also available as :class:`BytesIO` objects::
72
73 f = io.BytesIO(b"some initial binary data: \x00\x01")
74
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000075The binary stream API is described in detail in the docs of
76:class:`BufferedIOBase`.
Antoine Pitroub530e142010-08-30 12:41:00 +000077
78Other library modules may provide additional ways to create text or binary
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000079streams. See :meth:`socket.socket.makefile` for example.
80
Antoine Pitroub530e142010-08-30 12:41:00 +000081
82Raw I/O
83^^^^^^^
84
85Raw I/O (also called *unbuffered I/O*) is generally used as a low-level
86building-block for binary and text streams; it is rarely useful to directly
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000087manipulate a raw stream from user code. Nevertheless, you can create a raw
88stream by opening a file in binary mode with buffering disabled::
Antoine Pitroub530e142010-08-30 12:41:00 +000089
90 f = open("myfile.jpg", "rb", buffering=0)
91
Benjamin Peterson6b4fa772010-08-30 13:19:53 +000092The raw stream API is described in detail in the docs of :class:`RawIOBase`.
Benjamin Petersoncc12e1b2010-02-19 00:58:13 +000093
Georg Brandl014197c2008-04-09 18:40:51 +000094
Antoine Pitroub530e142010-08-30 12:41:00 +000095High-level Module Interface
96---------------------------
Georg Brandl014197c2008-04-09 18:40:51 +000097
98.. data:: DEFAULT_BUFFER_SIZE
99
100 An int containing the default buffer size used by the module's buffered I/O
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000101 classes. :func:`open` uses the file's blksize (as obtained by
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000102 :func:`os.stat`) if possible.
Georg Brandl014197c2008-04-09 18:40:51 +0000103
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000104
Benjamin Peterson95e392c2010-04-27 21:07:21 +0000105.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
Georg Brandl014197c2008-04-09 18:40:51 +0000106
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000107 This is an alias for the builtin :func:`open` function.
Georg Brandl014197c2008-04-09 18:40:51 +0000108
Georg Brandl014197c2008-04-09 18:40:51 +0000109
110.. exception:: BlockingIOError
111
112 Error raised when blocking would occur on a non-blocking stream. It inherits
113 :exc:`IOError`.
114
115 In addition to those of :exc:`IOError`, :exc:`BlockingIOError` has one
116 attribute:
117
118 .. attribute:: characters_written
119
120 An integer containing the number of characters written to the stream
121 before it blocked.
122
123
124.. exception:: UnsupportedOperation
125
126 An exception inheriting :exc:`IOError` and :exc:`ValueError` that is raised
127 when an unsupported operation is called on a stream.
128
129
Antoine Pitroub530e142010-08-30 12:41:00 +0000130In-memory streams
131^^^^^^^^^^^^^^^^^
132
133It is also possible to use a :class:`str` or :class:`bytes`-like object as a
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000134file for both reading and writing. For strings :class:`StringIO` can be used
135like a file opened in text mode. :class:`BytesIO` can be used like a file
136opened in binary mode. Both provide full read-write capabilities with random
137access.
Antoine Pitroub530e142010-08-30 12:41:00 +0000138
139
140.. seealso::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000141
Antoine Pitroub530e142010-08-30 12:41:00 +0000142 :mod:`sys`
143 contains the standard IO streams: :data:`sys.stdin`, :data:`sys.stdout`,
144 and :data:`sys.stderr`.
145
146
147Class hierarchy
148---------------
149
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000150The implementation of I/O streams is organized as a hierarchy of classes. First
151:term:`abstract base classes <abstract base class>` (ABCs), which are used to
152specify the various categories of streams, then concrete classes providing the
153standard stream implementations.
Antoine Pitroub530e142010-08-30 12:41:00 +0000154
155 .. note::
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000156
157 The abstract base classes also provide default implementations of some
158 methods in order to help implementation of concrete stream classes. For
159 example, :class:`BufferedIOBase` provides unoptimized implementations of
160 ``readinto()`` and ``readline()``.
Antoine Pitroub530e142010-08-30 12:41:00 +0000161
162At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It
163defines the basic interface to a stream. Note, however, that there is no
164separation between reading and writing to streams; implementations are allowed
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000165to raise :exc:`UnsupportedOperation` if they do not support a given operation.
Antoine Pitroub530e142010-08-30 12:41:00 +0000166
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000167The :class:`RawIOBase` ABC extends :class:`IOBase`. It deals with the reading
168and writing of bytes to a stream. :class:`FileIO` subclasses :class:`RawIOBase`
169to provide an interface to files in the machine's file system.
Antoine Pitroub530e142010-08-30 12:41:00 +0000170
171The :class:`BufferedIOBase` ABC deals with buffering on a raw byte stream
172(:class:`RawIOBase`). Its subclasses, :class:`BufferedWriter`,
173:class:`BufferedReader`, and :class:`BufferedRWPair` buffer streams that are
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000174readable, writable, and both readable and writable. :class:`BufferedRandom`
175provides a buffered interface to random access streams. Another
Georg Brandl682d7e02010-10-06 10:26:05 +0000176:class:`BufferedIOBase` subclass, :class:`BytesIO`, is a stream of in-memory
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000177bytes.
Antoine Pitroub530e142010-08-30 12:41:00 +0000178
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000179The :class:`TextIOBase` ABC, another subclass of :class:`IOBase`, deals with
180streams whose bytes represent text, and handles encoding and decoding to and
181from strings. :class:`TextIOWrapper`, which extends it, is a buffered text
182interface to a buffered raw stream (:class:`BufferedIOBase`). Finally,
183:class:`StringIO` is an in-memory stream for text.
Antoine Pitroub530e142010-08-30 12:41:00 +0000184
185Argument names are not part of the specification, and only the arguments of
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000186:func:`open` are intended to be used as keyword arguments.
Antoine Pitroub530e142010-08-30 12:41:00 +0000187
188
Georg Brandl014197c2008-04-09 18:40:51 +0000189I/O Base Classes
Antoine Pitroub530e142010-08-30 12:41:00 +0000190^^^^^^^^^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000191
192.. class:: IOBase
193
194 The abstract base class for all I/O classes, acting on streams of bytes.
195 There is no public constructor.
196
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000197 This class provides empty abstract implementations for many methods
198 that derived classes can override selectively; the default
199 implementations represent a file that cannot be read, written or
200 seeked.
Georg Brandl014197c2008-04-09 18:40:51 +0000201
202 Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`,
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000203 or :meth:`write` because their signatures will vary, implementations and
204 clients should consider those methods part of the interface. Also,
205 implementations may raise a :exc:`IOError` when operations they do not
206 support are called.
Georg Brandl014197c2008-04-09 18:40:51 +0000207
208 The basic type used for binary data read from or written to a file is
209 :class:`bytes`. :class:`bytearray`\s are accepted too, and in some cases
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000210 (such as :class:`readinto`) required. Text I/O classes work with
211 :class:`str` data.
Georg Brandl014197c2008-04-09 18:40:51 +0000212
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000213 Note that calling any method (even inquiries) on a closed stream is
214 undefined. Implementations may raise :exc:`IOError` in this case.
Georg Brandl014197c2008-04-09 18:40:51 +0000215
216 IOBase (and its subclasses) support the iterator protocol, meaning that an
217 :class:`IOBase` object can be iterated over yielding the lines in a stream.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000218 Lines are defined slightly differently depending on whether the stream is
219 a binary stream (yielding bytes), or a text stream (yielding character
Meador Inge777bebb2011-12-03 12:29:54 -0600220 strings). See :meth:`~IOBase.readline` below.
Georg Brandl014197c2008-04-09 18:40:51 +0000221
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000222 IOBase is also a context manager and therefore supports the
223 :keyword:`with` statement. In this example, *file* is closed after the
224 :keyword:`with` statement's suite is finished---even if an exception occurs::
Georg Brandl014197c2008-04-09 18:40:51 +0000225
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000226 with open('spam.txt', 'w') as file:
227 file.write('Spam and eggs!')
Georg Brandl014197c2008-04-09 18:40:51 +0000228
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000229 :class:`IOBase` provides these data attributes and methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000230
231 .. method:: close()
232
Christian Heimesecc42a22008-11-05 19:30:32 +0000233 Flush and close this stream. This method has no effect if the file is
Georg Brandl48310cd2009-01-03 21:18:54 +0000234 already closed. Once the file is closed, any operation on the file
Georg Brandl8569e582010-05-19 20:57:08 +0000235 (e.g. reading or writing) will raise a :exc:`ValueError`.
Antoine Pitrouf9fc08f2010-04-28 19:59:32 +0000236
237 As a convenience, it is allowed to call this method more than once;
238 only the first call, however, will have an effect.
Georg Brandl014197c2008-04-09 18:40:51 +0000239
240 .. attribute:: closed
241
242 True if the stream is closed.
243
244 .. method:: fileno()
245
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000246 Return the underlying file descriptor (an integer) of the stream if it
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000247 exists. An :exc:`IOError` is raised if the IO object does not use a file
Georg Brandl014197c2008-04-09 18:40:51 +0000248 descriptor.
249
250 .. method:: flush()
251
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000252 Flush the write buffers of the stream if applicable. This does nothing
253 for read-only and non-blocking streams.
Georg Brandl014197c2008-04-09 18:40:51 +0000254
255 .. method:: isatty()
256
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000257 Return ``True`` if the stream is interactive (i.e., connected to
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000258 a terminal/tty device).
Georg Brandl014197c2008-04-09 18:40:51 +0000259
260 .. method:: readable()
261
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000262 Return ``True`` if the stream can be read from. If False, :meth:`read`
263 will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000264
Georg Brandl3dd33882009-06-01 17:35:27 +0000265 .. method:: readline(limit=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000266
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000267 Read and return one line from the stream. If *limit* is specified, at
268 most *limit* bytes will be read.
Georg Brandl014197c2008-04-09 18:40:51 +0000269
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000270 The line terminator is always ``b'\n'`` for binary files; for text files,
Benjamin Peterson6b4fa772010-08-30 13:19:53 +0000271 the *newlines* argument to :func:`open` can be used to select the line
Georg Brandl014197c2008-04-09 18:40:51 +0000272 terminator(s) recognized.
273
Georg Brandl3dd33882009-06-01 17:35:27 +0000274 .. method:: readlines(hint=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000275
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000276 Read and return a list of lines from the stream. *hint* can be specified
277 to control the number of lines read: no more lines will be read if the
278 total size (in bytes/characters) of all lines so far exceeds *hint*.
Georg Brandl014197c2008-04-09 18:40:51 +0000279
Georg Brandl3dd33882009-06-01 17:35:27 +0000280 .. method:: seek(offset, whence=SEEK_SET)
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000281
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000282 Change the stream position to the given byte *offset*. *offset* is
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000283 interpreted relative to the position indicated by *whence*. Values for
284 *whence* are:
285
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000286 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
287 *offset* should be zero or positive
288 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
289 be negative
290 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
291 negative
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000292
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000293 Return the new absolute position.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000294
Raymond Hettinger35a88362009-04-09 00:08:24 +0000295 .. versionadded:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +0000296 The ``SEEK_*`` constants.
Benjamin Peterson0e4caf42009-04-01 21:22:20 +0000297
Georg Brandl014197c2008-04-09 18:40:51 +0000298 .. method:: seekable()
299
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000300 Return ``True`` if the stream supports random access. If ``False``,
301 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000302
303 .. method:: tell()
304
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000305 Return the current stream position.
Georg Brandl014197c2008-04-09 18:40:51 +0000306
Georg Brandl3dd33882009-06-01 17:35:27 +0000307 .. method:: truncate(size=None)
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000308
Antoine Pitrou2016dc92010-05-29 12:08:25 +0000309 Resize the stream to the given *size* in bytes (or the current position
310 if *size* is not specified). The current stream position isn't changed.
311 This resizing can extend or reduce the current file size. In case of
312 extension, the contents of the new file area depend on the platform
313 (on most systems, additional bytes are zero-filled, on Windows they're
314 undetermined). The new file size is returned.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000315
Georg Brandl014197c2008-04-09 18:40:51 +0000316 .. method:: writable()
317
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000318 Return ``True`` if the stream supports writing. If ``False``,
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000319 :meth:`write` and :meth:`truncate` will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000320
321 .. method:: writelines(lines)
322
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000323 Write a list of lines to the stream. Line separators are not added, so it
324 is usual for each of the lines provided to have a line separator at the
325 end.
Georg Brandl014197c2008-04-09 18:40:51 +0000326
327
328.. class:: RawIOBase
329
330 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
331 public constructor.
332
Antoine Pitrou497a7672009-09-17 17:18:01 +0000333 Raw binary I/O typically provides low-level access to an underlying OS
334 device or API, and does not try to encapsulate it in high-level primitives
335 (this is left to Buffered I/O and Text I/O, described later in this page).
336
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000337 In addition to the attributes and methods from :class:`IOBase`,
338 RawIOBase provides the following methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000339
Georg Brandl3dd33882009-06-01 17:35:27 +0000340 .. method:: read(n=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000341
Antoine Pitrou78ddbe62009-10-01 16:24:45 +0000342 Read up to *n* bytes from the object and return them. As a convenience,
343 if *n* is unspecified or -1, :meth:`readall` is called. Otherwise,
344 only one system call is ever made. Fewer than *n* bytes may be
345 returned if the operating system call returns fewer than *n* bytes.
346
347 If 0 bytes are returned, and *n* was not 0, this indicates end of file.
348 If the object is in non-blocking mode and no bytes are available,
349 ``None`` is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000350
Benjamin Petersonb47aace2008-04-09 21:38:38 +0000351 .. method:: readall()
Georg Brandl014197c2008-04-09 18:40:51 +0000352
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000353 Read and return all the bytes from the stream until EOF, using multiple
354 calls to the stream if necessary.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000355
356 .. method:: readinto(b)
357
Daniel Stutzbachd01df462010-11-30 17:49:53 +0000358 Read up to len(b) bytes into bytearray *b* and return the number
359 of bytes read. If the object is in non-blocking mode and no
360 bytes are available, ``None`` is returned.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000361
362 .. method:: write(b)
363
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000364 Write the given bytes or bytearray object, *b*, to the underlying raw
Antoine Pitrou497a7672009-09-17 17:18:01 +0000365 stream and return the number of bytes written. This can be less than
366 ``len(b)``, depending on specifics of the underlying raw stream, and
367 especially if it is in non-blocking mode. ``None`` is returned if the
368 raw stream is set not to block and no single byte could be readily
369 written to it.
Georg Brandl014197c2008-04-09 18:40:51 +0000370
371
Georg Brandl014197c2008-04-09 18:40:51 +0000372.. class:: BufferedIOBase
373
Antoine Pitrou497a7672009-09-17 17:18:01 +0000374 Base class for binary streams that support some kind of buffering.
375 It inherits :class:`IOBase`. There is no public constructor.
Georg Brandl014197c2008-04-09 18:40:51 +0000376
Antoine Pitrou497a7672009-09-17 17:18:01 +0000377 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
378 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
379 input as requested or to consume all given output, at the expense of
380 making perhaps more than one system call.
381
382 In addition, those methods can raise :exc:`BlockingIOError` if the
383 underlying raw stream is in non-blocking mode and cannot take or give
384 enough data; unlike their :class:`RawIOBase` counterparts, they will
385 never return ``None``.
386
387 Besides, the :meth:`read` method does not have a default
Georg Brandl014197c2008-04-09 18:40:51 +0000388 implementation that defers to :meth:`readinto`.
389
Antoine Pitrou497a7672009-09-17 17:18:01 +0000390 A typical :class:`BufferedIOBase` implementation should not inherit from a
391 :class:`RawIOBase` implementation, but wrap one, like
392 :class:`BufferedWriter` and :class:`BufferedReader` do.
Georg Brandl014197c2008-04-09 18:40:51 +0000393
Senthil Kumarana6bac952011-07-04 11:28:30 -0700394 :class:`BufferedIOBase` provides or overrides these methods and attribute in
395 addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000396
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000397 .. attribute:: raw
398
399 The underlying raw stream (a :class:`RawIOBase` instance) that
400 :class:`BufferedIOBase` deals with. This is not part of the
401 :class:`BufferedIOBase` API and may not exist on some implementations.
402
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000403 .. method:: detach()
404
405 Separate the underlying raw stream from the buffer and return it.
406
407 After the raw stream has been detached, the buffer is in an unusable
408 state.
409
410 Some buffers, like :class:`BytesIO`, do not have the concept of a single
411 raw stream to return from this method. They raise
412 :exc:`UnsupportedOperation`.
413
Benjamin Petersonedc36472009-05-01 20:48:14 +0000414 .. versionadded:: 3.1
415
Georg Brandl3dd33882009-06-01 17:35:27 +0000416 .. method:: read(n=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000417
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000418 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
Georg Brandl014197c2008-04-09 18:40:51 +0000419 negative, data is read and returned until EOF is reached. An empty bytes
420 object is returned if the stream is already at EOF.
421
422 If the argument is positive, and the underlying raw stream is not
423 interactive, multiple raw reads may be issued to satisfy the byte count
424 (unless EOF is reached first). But for interactive raw streams, at most
425 one raw read will be issued, and a short result does not imply that EOF is
426 imminent.
427
Antoine Pitrou497a7672009-09-17 17:18:01 +0000428 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
429 non blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000430
Georg Brandl3dd33882009-06-01 17:35:27 +0000431 .. method:: read1(n=-1)
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000432
433 Read and return up to *n* bytes, with at most one call to the underlying
Antoine Pitrou497a7672009-09-17 17:18:01 +0000434 raw stream's :meth:`~RawIOBase.read` method. This can be useful if you
435 are implementing your own buffering on top of a :class:`BufferedIOBase`
436 object.
Benjamin Peterson4fa88fa2009-03-04 00:14:51 +0000437
Georg Brandl014197c2008-04-09 18:40:51 +0000438 .. method:: readinto(b)
439
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000440 Read up to len(b) bytes into bytearray *b* and return the number of bytes
Georg Brandl014197c2008-04-09 18:40:51 +0000441 read.
442
443 Like :meth:`read`, multiple reads may be issued to the underlying raw
Antoine Pitrou497a7672009-09-17 17:18:01 +0000444 stream, unless the latter is 'interactive'.
Georg Brandl014197c2008-04-09 18:40:51 +0000445
Antoine Pitrou497a7672009-09-17 17:18:01 +0000446 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
447 non blocking-mode, and has no data available at the moment.
Georg Brandl014197c2008-04-09 18:40:51 +0000448
Georg Brandl014197c2008-04-09 18:40:51 +0000449 .. method:: write(b)
450
Antoine Pitrou497a7672009-09-17 17:18:01 +0000451 Write the given bytes or bytearray object, *b* and return the number
452 of bytes written (never less than ``len(b)``, since if the write fails
453 an :exc:`IOError` will be raised). Depending on the actual
454 implementation, these bytes may be readily written to the underlying
455 stream, or held in a buffer for performance and latency reasons.
Georg Brandl014197c2008-04-09 18:40:51 +0000456
Antoine Pitrou497a7672009-09-17 17:18:01 +0000457 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
458 data needed to be written to the raw stream but it couldn't accept
459 all the data without blocking.
Georg Brandl014197c2008-04-09 18:40:51 +0000460
461
Benjamin Petersonaa069002009-01-23 03:26:36 +0000462Raw File I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000463^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000464
Georg Brandl3dd33882009-06-01 17:35:27 +0000465.. class:: FileIO(name, mode='r', closefd=True)
Benjamin Petersonaa069002009-01-23 03:26:36 +0000466
Antoine Pitrou497a7672009-09-17 17:18:01 +0000467 :class:`FileIO` represents an OS-level file containing bytes data.
468 It implements the :class:`RawIOBase` interface (and therefore the
469 :class:`IOBase` interface, too).
470
471 The *name* can be one of two things:
472
473 * a character string or bytes object representing the path to the file
474 which will be opened;
475 * an integer representing the number of an existing OS-level file descriptor
476 to which the resulting :class:`FileIO` object will give access.
Benjamin Petersonaa069002009-01-23 03:26:36 +0000477
478 The *mode* can be ``'r'``, ``'w'`` or ``'a'`` for reading (default), writing,
479 or appending. The file will be created if it doesn't exist when opened for
480 writing or appending; it will be truncated when opened for writing. Add a
481 ``'+'`` to the mode to allow simultaneous reading and writing.
482
Antoine Pitrou497a7672009-09-17 17:18:01 +0000483 The :meth:`read` (when called with a positive argument), :meth:`readinto`
484 and :meth:`write` methods on this class will only make one system call.
485
Benjamin Petersonaa069002009-01-23 03:26:36 +0000486 In addition to the attributes and methods from :class:`IOBase` and
487 :class:`RawIOBase`, :class:`FileIO` provides the following data
488 attributes and methods:
489
490 .. attribute:: mode
491
492 The mode as given in the constructor.
493
494 .. attribute:: name
495
496 The file name. This is the file descriptor of the file when no name is
497 given in the constructor.
498
Benjamin Petersonaa069002009-01-23 03:26:36 +0000499
500Buffered Streams
Antoine Pitroub530e142010-08-30 12:41:00 +0000501^^^^^^^^^^^^^^^^
Benjamin Petersonaa069002009-01-23 03:26:36 +0000502
Antoine Pitroubed81c82010-12-03 19:14:17 +0000503Buffered I/O streams provide a higher-level interface to an I/O device
504than raw I/O does.
Antoine Pitrou497a7672009-09-17 17:18:01 +0000505
Georg Brandl014197c2008-04-09 18:40:51 +0000506.. class:: BytesIO([initial_bytes])
507
508 A stream implementation using an in-memory bytes buffer. It inherits
509 :class:`BufferedIOBase`.
510
Antoine Pitroub530e142010-08-30 12:41:00 +0000511 The argument *initial_bytes* contains optional initial :class:`bytes` data.
Georg Brandl014197c2008-04-09 18:40:51 +0000512
513 :class:`BytesIO` provides or overrides these methods in addition to those
514 from :class:`BufferedIOBase` and :class:`IOBase`:
515
Antoine Pitrou972ee132010-09-06 18:48:21 +0000516 .. method:: getbuffer()
517
518 Return a readable and writable view over the contents of the buffer
519 without copying them. Also, mutating the view will transparently
520 update the contents of the buffer::
521
522 >>> b = io.BytesIO(b"abcdef")
523 >>> view = b.getbuffer()
524 >>> view[2:4] = b"56"
525 >>> b.getvalue()
526 b'ab56ef'
527
528 .. note::
529 As long as the view exists, the :class:`BytesIO` object cannot be
530 resized.
531
532 .. versionadded:: 3.2
533
Georg Brandl014197c2008-04-09 18:40:51 +0000534 .. method:: getvalue()
535
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000536 Return ``bytes`` containing the entire contents of the buffer.
Georg Brandl014197c2008-04-09 18:40:51 +0000537
538 .. method:: read1()
539
Benjamin Peterson9efcc4b2008-04-14 21:30:21 +0000540 In :class:`BytesIO`, this is the same as :meth:`read`.
Georg Brandl014197c2008-04-09 18:40:51 +0000541
Georg Brandl014197c2008-04-09 18:40:51 +0000542
Georg Brandl3dd33882009-06-01 17:35:27 +0000543.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000544
Antoine Pitrou497a7672009-09-17 17:18:01 +0000545 A buffer providing higher-level access to a readable, sequential
546 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
547 When reading data from this object, a larger amount of data may be
548 requested from the underlying raw stream, and kept in an internal buffer.
549 The buffered data can then be returned directly on subsequent reads.
Georg Brandl014197c2008-04-09 18:40:51 +0000550
551 The constructor creates a :class:`BufferedReader` for the given readable
552 *raw* stream and *buffer_size*. If *buffer_size* is omitted,
553 :data:`DEFAULT_BUFFER_SIZE` is used.
554
555 :class:`BufferedReader` provides or overrides these methods in addition to
556 those from :class:`BufferedIOBase` and :class:`IOBase`:
557
558 .. method:: peek([n])
559
Benjamin Petersonc43a26d2009-06-16 23:09:24 +0000560 Return bytes from the stream without advancing the position. At most one
Benjamin Peterson2a8b54d2009-06-14 14:37:23 +0000561 single read on the raw stream is done to satisfy the call. The number of
562 bytes returned may be less or more than requested.
Georg Brandl014197c2008-04-09 18:40:51 +0000563
564 .. method:: read([n])
565
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000566 Read and return *n* bytes, or if *n* is not given or negative, until EOF
Georg Brandl014197c2008-04-09 18:40:51 +0000567 or if the read call would block in non-blocking mode.
568
569 .. method:: read1(n)
570
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000571 Read and return up to *n* bytes with only one call on the raw stream. If
Georg Brandl014197c2008-04-09 18:40:51 +0000572 at least one byte is buffered, only buffered bytes are returned.
573 Otherwise, one raw stream read call is made.
574
575
Georg Brandl3dd33882009-06-01 17:35:27 +0000576.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000577
Antoine Pitrou497a7672009-09-17 17:18:01 +0000578 A buffer providing higher-level access to a writeable, sequential
579 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
580 When writing to this object, data is normally held into an internal
581 buffer. The buffer will be written out to the underlying :class:`RawIOBase`
582 object under various conditions, including:
583
584 * when the buffer gets too small for all pending data;
585 * when :meth:`flush()` is called;
586 * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects);
587 * when the :class:`BufferedWriter` object is closed or destroyed.
Georg Brandl014197c2008-04-09 18:40:51 +0000588
589 The constructor creates a :class:`BufferedWriter` for the given writeable
590 *raw* stream. If the *buffer_size* is not given, it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000591 :data:`DEFAULT_BUFFER_SIZE`.
592
Georg Brandl3dd33882009-06-01 17:35:27 +0000593 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Georg Brandl014197c2008-04-09 18:40:51 +0000594
595 :class:`BufferedWriter` provides or overrides these methods in addition to
596 those from :class:`BufferedIOBase` and :class:`IOBase`:
597
598 .. method:: flush()
599
600 Force bytes held in the buffer into the raw stream. A
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000601 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000602
603 .. method:: write(b)
604
Antoine Pitrou497a7672009-09-17 17:18:01 +0000605 Write the bytes or bytearray object, *b* and return the number of bytes
606 written. When in non-blocking mode, a :exc:`BlockingIOError` is raised
607 if the buffer needs to be written out but the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000608
609
Georg Brandl3dd33882009-06-01 17:35:27 +0000610.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Georg Brandl014197c2008-04-09 18:40:51 +0000611
612 A buffered interface to random access streams. It inherits
Antoine Pitrou497a7672009-09-17 17:18:01 +0000613 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
614 :meth:`seek` and :meth:`tell` functionality.
Georg Brandl014197c2008-04-09 18:40:51 +0000615
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000616 The constructor creates a reader and writer for a seekable raw stream, given
Georg Brandl014197c2008-04-09 18:40:51 +0000617 in the first argument. If the *buffer_size* is omitted it defaults to
Benjamin Peterson394ee002009-03-05 22:33:59 +0000618 :data:`DEFAULT_BUFFER_SIZE`.
619
Georg Brandl3dd33882009-06-01 17:35:27 +0000620 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Georg Brandl014197c2008-04-09 18:40:51 +0000621
622 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
623 :class:`BufferedWriter` can do.
624
625
Antoine Pitrou13d28952011-08-20 19:48:43 +0200626.. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
627
628 A buffered I/O object combining two unidirectional :class:`RawIOBase`
629 objects -- one readable, the other writeable -- into a single bidirectional
630 endpoint. It inherits :class:`BufferedIOBase`.
631
632 *reader* and *writer* are :class:`RawIOBase` objects that are readable and
633 writeable respectively. If the *buffer_size* is omitted it defaults to
634 :data:`DEFAULT_BUFFER_SIZE`.
635
636 A fourth argument, *max_buffer_size*, is supported, but unused and
637 deprecated.
638
639 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
640 except for :meth:`~BufferedIOBase.detach`, which raises
641 :exc:`UnsupportedOperation`.
642
643 .. warning::
644 :class:`BufferedRWPair` does not attempt to synchronize accesses to
645 its underlying raw streams. You should not pass it the same object
646 as reader and writer; use :class:`BufferedRandom` instead.
647
648
Georg Brandl014197c2008-04-09 18:40:51 +0000649Text I/O
Antoine Pitroub530e142010-08-30 12:41:00 +0000650^^^^^^^^
Georg Brandl014197c2008-04-09 18:40:51 +0000651
652.. class:: TextIOBase
653
654 Base class for text streams. This class provides a character and line based
655 interface to stream I/O. There is no :meth:`readinto` method because
656 Python's character strings are immutable. It inherits :class:`IOBase`.
657 There is no public constructor.
658
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000659 :class:`TextIOBase` provides or overrides these data attributes and
660 methods in addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000661
662 .. attribute:: encoding
663
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000664 The name of the encoding used to decode the stream's bytes into
Georg Brandl014197c2008-04-09 18:40:51 +0000665 strings, and to encode strings into bytes.
666
Benjamin Peterson0926ad12009-06-06 18:02:12 +0000667 .. attribute:: errors
668
669 The error setting of the decoder or encoder.
670
Georg Brandl014197c2008-04-09 18:40:51 +0000671 .. attribute:: newlines
672
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000673 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrou497a7672009-09-17 17:18:01 +0000674 translated so far. Depending on the implementation and the initial
675 constructor flags, this may not be available.
Georg Brandl014197c2008-04-09 18:40:51 +0000676
Benjamin Petersonc609b6b2009-06-28 17:32:20 +0000677 .. attribute:: buffer
678
679 The underlying binary buffer (a :class:`BufferedIOBase` instance) that
680 :class:`TextIOBase` deals with. This is not part of the
681 :class:`TextIOBase` API and may not exist on some implementations.
682
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000683 .. method:: detach()
684
Antoine Pitrou497a7672009-09-17 17:18:01 +0000685 Separate the underlying binary buffer from the :class:`TextIOBase` and
686 return it.
Benjamin Petersond2e0c792009-05-01 20:40:59 +0000687
688 After the underlying buffer has been detached, the :class:`TextIOBase` is
689 in an unusable state.
690
691 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
692 have the concept of an underlying buffer and calling this method will
693 raise :exc:`UnsupportedOperation`.
694
Benjamin Petersonedc36472009-05-01 20:48:14 +0000695 .. versionadded:: 3.1
696
Georg Brandl014197c2008-04-09 18:40:51 +0000697 .. method:: read(n)
698
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000699 Read and return at most *n* characters from the stream as a single
Antoine Pitrou497a7672009-09-17 17:18:01 +0000700 :class:`str`. If *n* is negative or ``None``, reads until EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000701
Antoine Pitrou707bd4e2012-07-25 22:38:33 +0200702 .. method:: readline(limit=-1)
Georg Brandl014197c2008-04-09 18:40:51 +0000703
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000704 Read until newline or EOF and return a single ``str``. If the stream is
705 already at EOF, an empty string is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000706
Antoine Pitrou707bd4e2012-07-25 22:38:33 +0200707 If *limit* is specified, at most *limit* characters will be read.
708
Antoine Pitrouf49d1522012-01-21 20:20:49 +0100709 .. method:: seek(offset, whence=SEEK_SET)
710
711 Change the stream position to the given *offset*. Behaviour depends
712 on the *whence* parameter:
713
714 * :data:`SEEK_SET` or ``0``: seek from the start of the stream
715 (the default); *offset* must either be a number returned by
716 :meth:`TextIOBase.tell`, or zero. Any other *offset* value
717 produces undefined behaviour.
718 * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
719 *offset* must be zero, which is a no-operation (all other values
720 are unsupported).
721 * :data:`SEEK_END` or ``2``: seek to the end of the stream;
722 *offset* must be zero (all other values are unsupported).
723
724 Return the new absolute position as an opaque number.
725
726 .. versionadded:: 3.1
727 The ``SEEK_*`` constants.
728
729 .. method:: tell()
730
731 Return the current stream position as an opaque number. The number
732 does not usually represent a number of bytes in the underlying
733 binary storage.
734
Georg Brandl014197c2008-04-09 18:40:51 +0000735 .. method:: write(s)
736
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000737 Write the string *s* to the stream and return the number of characters
738 written.
Georg Brandl014197c2008-04-09 18:40:51 +0000739
740
Georg Brandl3dd33882009-06-01 17:35:27 +0000741.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
Georg Brandl014197c2008-04-09 18:40:51 +0000742
Antoine Pitrou497a7672009-09-17 17:18:01 +0000743 A buffered text stream over a :class:`BufferedIOBase` binary stream.
Georg Brandl014197c2008-04-09 18:40:51 +0000744 It inherits :class:`TextIOBase`.
745
746 *encoding* gives the name of the encoding that the stream will be decoded or
747 encoded with. It defaults to :func:`locale.getpreferredencoding`.
748
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000749 *errors* is an optional string that specifies how encoding and decoding
750 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
751 exception if there is an encoding error (the default of ``None`` has the same
752 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
753 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Christian Heimesa342c012008-04-20 21:01:16 +0000754 (such as ``'?'``) to be inserted where there is malformed data. When
755 writing, ``'xmlcharrefreplace'`` (replace with the appropriate XML character
756 reference) or ``'backslashreplace'`` (replace with backslashed escape
757 sequences) can be used. Any other error handling name that has been
758 registered with :func:`codecs.register_error` is also valid.
Georg Brandl014197c2008-04-09 18:40:51 +0000759
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200760 *newline* controls how line endings are handled. It can be ``None``,
761 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
762
Andrew Svetlovecd78fe2012-08-13 12:58:02 +0300763 * When reading input from the stream, if *newline* is ``None``,
764 universal newlines mode is enabled. Lines in the input can end
765 in ``'\n'``, ``'\r'``, or ``'\r\n'``, and these are translated
766 into ``'\n'`` before being returned to the caller. If it is
767 ``''``, universal newline mode is enabled, but line endings are
768 returned to the caller untranslated. If it has any of the other
769 legal values, input lines are only terminated by the given
770 string, and the line ending is returned to the caller
771 untranslated.
Antoine Pitrou0c1c0d42012-08-04 00:55:38 +0200772
Andrew Svetlovecd78fe2012-08-13 12:58:02 +0300773 * When writing output to the stream, if *newline* is ``None``, any
774 ``'\n'`` characters written are translated to the system default
775 line separator, :data:`os.linesep`. If *newline* is ``''`` or
776 ``'\n'``, no translation takes place. If *newline* is any of the
777 other legal values, any ``'\n'`` characters written are
Victor Stinner401e17d2012-08-04 01:18:56 +0200778 translated to the given string.
Georg Brandl014197c2008-04-09 18:40:51 +0000779
780 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
781 write contains a newline character.
782
Benjamin Peterson0926ad12009-06-06 18:02:12 +0000783 :class:`TextIOWrapper` provides one attribute in addition to those of
Georg Brandl014197c2008-04-09 18:40:51 +0000784 :class:`TextIOBase` and its parents:
785
Georg Brandl014197c2008-04-09 18:40:51 +0000786 .. attribute:: line_buffering
787
788 Whether line buffering is enabled.
Georg Brandl48310cd2009-01-03 21:18:54 +0000789
Georg Brandl014197c2008-04-09 18:40:51 +0000790
Georg Brandl3dd33882009-06-01 17:35:27 +0000791.. class:: StringIO(initial_value='', newline=None)
Georg Brandl014197c2008-04-09 18:40:51 +0000792
Antoine Pitroub530e142010-08-30 12:41:00 +0000793 An in-memory stream for text I/O.
Georg Brandl014197c2008-04-09 18:40:51 +0000794
Benjamin Petersonaa1c8d82009-03-09 02:02:23 +0000795 The initial value of the buffer (an empty string by default) can be set by
796 providing *initial_value*. The *newline* argument works like that of
797 :class:`TextIOWrapper`. The default is to do no newline translation.
Georg Brandl014197c2008-04-09 18:40:51 +0000798
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000799 :class:`StringIO` provides this method in addition to those from
Antoine Pitroub530e142010-08-30 12:41:00 +0000800 :class:`TextIOBase` and its parents:
Georg Brandl014197c2008-04-09 18:40:51 +0000801
802 .. method:: getvalue()
803
Georg Brandl2932d932008-05-30 06:27:09 +0000804 Return a ``str`` containing the entire contents of the buffer at any
805 time before the :class:`StringIO` object's :meth:`close` method is
806 called.
Georg Brandl014197c2008-04-09 18:40:51 +0000807
Georg Brandl2932d932008-05-30 06:27:09 +0000808 Example usage::
809
810 import io
811
812 output = io.StringIO()
813 output.write('First line.\n')
814 print('Second line.', file=output)
815
816 # Retrieve file contents -- this will be
817 # 'First line.\nSecond line.\n'
818 contents = output.getvalue()
819
Georg Brandl48310cd2009-01-03 21:18:54 +0000820 # Close object and discard memory buffer --
Georg Brandl2932d932008-05-30 06:27:09 +0000821 # .getvalue() will now raise an exception.
822 output.close()
Georg Brandl014197c2008-04-09 18:40:51 +0000823
Antoine Pitroub530e142010-08-30 12:41:00 +0000824
Georg Brandl014197c2008-04-09 18:40:51 +0000825.. class:: IncrementalNewlineDecoder
826
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000827 A helper codec that decodes newlines for universal newlines mode. It
828 inherits :class:`codecs.IncrementalDecoder`.
Georg Brandl014197c2008-04-09 18:40:51 +0000829
Antoine Pitroubed81c82010-12-03 19:14:17 +0000830
Antoine Pitroubed81c82010-12-03 19:14:17 +0000831Performance
Benjamin Petersonedf51322011-02-24 03:03:46 +0000832-----------
833
834This section discusses the performance of the provided concrete I/O
835implementations.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000836
837Binary I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +0000838^^^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +0000839
Benjamin Petersonedf51322011-02-24 03:03:46 +0000840By reading and writing only large chunks of data even when the user asks for a
841single byte, buffered I/O hides any inefficiency in calling and executing the
842operating system's unbuffered I/O routines. The gain depends on the OS and the
843kind of I/O which is performed. For example, on some modern OSes such as Linux,
844unbuffered disk I/O can be as fast as buffered I/O. The bottom line, however,
845is that buffered I/O offers predictable performance regardless of the platform
846and the backing device. Therefore, it is most always preferable to use buffered
847I/O rather than unbuffered I/O for binary datal
Antoine Pitroubed81c82010-12-03 19:14:17 +0000848
849Text I/O
Benjamin Petersonedf51322011-02-24 03:03:46 +0000850^^^^^^^^
Antoine Pitroubed81c82010-12-03 19:14:17 +0000851
852Text I/O over a binary storage (such as a file) is significantly slower than
Benjamin Petersonedf51322011-02-24 03:03:46 +0000853binary I/O over the same storage, because it requires conversions between
854unicode and binary data using a character codec. This can become noticeable
855handling huge amounts of text data like large log files. Also,
856:meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both quite slow
857due to the reconstruction algorithm used.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000858
859:class:`StringIO`, however, is a native in-memory unicode container and will
860exhibit similar speed to :class:`BytesIO`.
861
862Multi-threading
863^^^^^^^^^^^^^^^
864
Benjamin Petersonedf51322011-02-24 03:03:46 +0000865:class:`FileIO` objects are thread-safe to the extent that the operating system
866calls (such as ``read(2)`` under Unix) they wrap are thread-safe too.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000867
868Binary buffered objects (instances of :class:`BufferedReader`,
869:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
870protect their internal structures using a lock; it is therefore safe to call
871them from multiple threads at once.
872
873:class:`TextIOWrapper` objects are not thread-safe.
874
875Reentrancy
876^^^^^^^^^^
877
878Binary buffered objects (instances of :class:`BufferedReader`,
879:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
880are not reentrant. While reentrant calls will not happen in normal situations,
Benjamin Petersonedf51322011-02-24 03:03:46 +0000881they can arise from doing I/O in a :mod:`signal` handler. If a thread tries to
882renter a buffered object which it is already accessing, a :exc:`RuntimeError` is
883raised. Note this doesn't prohibit a different thread from entering the
884buffered object.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000885
Benjamin Petersonedf51322011-02-24 03:03:46 +0000886The above implicitly extends to text files, since the :func:`open()` function
887will wrap a buffered object inside a :class:`TextIOWrapper`. This includes
888standard streams and therefore affects the built-in function :func:`print()` as
889well.
Antoine Pitroubed81c82010-12-03 19:14:17 +0000890