blob: ab5a0436078fc26880e04a8460868e4aebfba935 [file] [log] [blame]
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +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>
Antoine Pitrouc9062ca2009-10-01 17:08:03 +00009.. moduleauthor:: Antoine Pitrou <solipsis@pitrou.net>
10.. moduleauthor:: Amaury Forgeot d'Arc <amauryfa@gmail.com>
11.. moduleauthor:: Benjamin Peterson <benjamin@python.org>
Benjamin Peterson51a37032009-01-11 19:48:15 +000012.. sectionauthor:: Benjamin Peterson <benjamin@python.org>
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000013
Benjamin Peterson183515c2010-08-28 20:56:50 +000014.. versionadded:: 2.6
15
Antoine Pitrouc9062ca2009-10-01 17:08:03 +000016The :mod:`io` module provides the Python interfaces to stream handling.
17Under Python 2.x, this is proposed as an alternative to the built-in
18:class:`file` object, but in Python 3.x it is the default interface to
19access files and streams.
20
21.. note::
22
23 Since this module has been designed primarily for Python 3.x, you have to
24 be aware that all uses of "bytes" in this document refer to the
25 :class:`str` type (of which :class:`bytes` is an alias), and all uses
26 of "text" refer to the :class:`unicode` type. Furthermore, those two
27 types are not interchangeable in the :mod:`io` APIs.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000028
29At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It
30defines the basic interface to a stream. Note, however, that there is no
Mark Dickinson3e4caeb2009-02-21 20:27:01 +000031separation between reading and writing to streams; implementations are allowed
Georg Brandl21946af2010-10-06 09:28:45 +000032to raise an :exc:`IOError` if they do not support a given operation.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000033
34Extending :class:`IOBase` is :class:`RawIOBase` which deals simply with the
35reading and writing of raw bytes to a stream. :class:`FileIO` subclasses
Benjamin Petersonad9f6292008-04-21 11:57:40 +000036:class:`RawIOBase` to provide an interface to files in the machine's
37file system.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000038
39:class:`BufferedIOBase` deals with buffering on a raw byte stream
40(:class:`RawIOBase`). Its subclasses, :class:`BufferedWriter`,
41:class:`BufferedReader`, and :class:`BufferedRWPair` buffer streams that are
Benjamin Petersonad9f6292008-04-21 11:57:40 +000042readable, writable, and both readable and writable.
43:class:`BufferedRandom` provides a buffered interface to random access
44streams. :class:`BytesIO` is a simple stream of in-memory bytes.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000045
Benjamin Petersonad9f6292008-04-21 11:57:40 +000046Another :class:`IOBase` subclass, :class:`TextIOBase`, deals with
47streams whose bytes represent text, and handles encoding and decoding
Antoine Pitrouc9062ca2009-10-01 17:08:03 +000048from and to :class:`unicode` strings. :class:`TextIOWrapper`, which extends
49it, is a buffered text interface to a buffered raw stream
Benjamin Petersonad9f6292008-04-21 11:57:40 +000050(:class:`BufferedIOBase`). Finally, :class:`StringIO` is an in-memory
Antoine Pitrouc9062ca2009-10-01 17:08:03 +000051stream for unicode text.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000052
53Argument names are not part of the specification, and only the arguments of
Georg Brandl9fa61bb2009-07-26 14:19:57 +000054:func:`.open` are intended to be used as keyword arguments.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000055
56
57Module Interface
58----------------
59
60.. data:: DEFAULT_BUFFER_SIZE
61
62 An int containing the default buffer size used by the module's buffered I/O
Georg Brandl9fa61bb2009-07-26 14:19:57 +000063 classes. :func:`.open` uses the file's blksize (as obtained by
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000064 :func:`os.stat`) if possible.
65
Benjamin Petersona9bd6d52010-04-27 21:01:54 +000066.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000067
Antoine Pitrouc9062ca2009-10-01 17:08:03 +000068 Open *file* and return a corresponding stream. If the file cannot be opened,
69 an :exc:`IOError` is raised.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000070
Georg Brandlb917af82010-08-01 21:33:42 +000071 *file* is either a string giving the pathname (absolute or
72 relative to the current working directory) of the file to be opened or
73 an integer file descriptor of the file to be wrapped. (If a file descriptor
74 is given, it is closed when the returned I/O object is closed, unless
75 *closefd* is set to ``False``.)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000076
77 *mode* is an optional string that specifies the mode in which the file is
78 opened. It defaults to ``'r'`` which means open for reading in text mode.
79 Other common values are ``'w'`` for writing (truncating the file if it
80 already exists), and ``'a'`` for appending (which on *some* Unix systems,
81 means that *all* writes append to the end of the file regardless of the
82 current seek position). In text mode, if *encoding* is not specified the
83 encoding used is platform dependent. (For reading and writing raw bytes use
84 binary mode and leave *encoding* unspecified.) The available modes are:
85
86 ========= ===============================================================
87 Character Meaning
88 --------- ---------------------------------------------------------------
89 ``'r'`` open for reading (default)
90 ``'w'`` open for writing, truncating the file first
91 ``'a'`` open for writing, appending to the end of the file if it exists
92 ``'b'`` binary mode
93 ``'t'`` text mode (default)
94 ``'+'`` open a disk file for updating (reading and writing)
R David Murray5618aaa2012-08-15 11:15:39 -040095 ``'U'`` universal newlines mode (for backwards compatibility; should
Benjamin Petersonad9f6292008-04-21 11:57:40 +000096 not be used in new code)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +000097 ========= ===============================================================
98
99 The default mode is ``'rt'`` (open for reading text). For binary random
100 access, the mode ``'w+b'`` opens and truncates the file to 0 bytes, while
101 ``'r+b'`` opens the file without truncation.
102
103 Python distinguishes between files opened in binary and text modes, even when
104 the underlying operating system doesn't. Files opened in binary mode
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000105 (including ``'b'`` in the *mode* argument) return contents as :class:`bytes`
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000106 objects without any decoding. In text mode (the default, or when ``'t'`` is
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000107 included in the *mode* argument), the contents of the file are returned as
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000108 :class:`unicode` strings, the bytes having been first decoded using a
109 platform-dependent encoding or using the specified *encoding* if given.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000110
Antoine Pitroue812d292009-12-19 21:01:10 +0000111 *buffering* is an optional integer used to set the buffering policy.
112 Pass 0 to switch buffering off (only allowed in binary mode), 1 to select
113 line buffering (only usable in text mode), and an integer > 1 to indicate
114 the size of a fixed-size chunk buffer. When no *buffering* argument is
115 given, the default buffering policy works as follows:
116
117 * Binary files are buffered in fixed-size chunks; the size of the buffer
118 is chosen using a heuristic trying to determine the underlying device's
119 "block size" and falling back on :attr:`DEFAULT_BUFFER_SIZE`.
120 On many systems, the buffer will typically be 4096 or 8192 bytes long.
121
122 * "Interactive" text files (files for which :meth:`isatty` returns True)
123 use line buffering. Other text files use the policy described above
124 for binary files.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000125
126 *encoding* is the name of the encoding used to decode or encode the file.
127 This should only be used in text mode. The default encoding is platform
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000128 dependent (whatever :func:`locale.getpreferredencoding` returns), but any
129 encoding supported by Python can be used. See the :mod:`codecs` module for
130 the list of supported encodings.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000131
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000132 *errors* is an optional string that specifies how encoding and decoding
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000133 errors are to be handled--this cannot be used in binary mode. Pass
134 ``'strict'`` to raise a :exc:`ValueError` exception if there is an encoding
135 error (the default of ``None`` has the same effect), or pass ``'ignore'`` to
136 ignore errors. (Note that ignoring encoding errors can lead to data loss.)
137 ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
138 where there is malformed data. When writing, ``'xmlcharrefreplace'``
139 (replace with the appropriate XML character reference) or
140 ``'backslashreplace'`` (replace with backslashed escape sequences) can be
141 used. Any other error handling name that has been registered with
142 :func:`codecs.register_error` is also valid.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000143
R David Murray5618aaa2012-08-15 11:15:39 -0400144 .. index::
145 single: universal newlines; open() (in module io)
146
R David Murrayc7b8f802012-08-15 11:22:58 -0400147 *newline* controls how :term:`universal newlines` works (it only applies to
148 text mode). It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``.
149 It works as follows:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000150
151 * On input, if *newline* is ``None``, universal newlines mode is enabled.
152 Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``, and these
153 are translated into ``'\n'`` before being returned to the caller. If it is
R David Murray5618aaa2012-08-15 11:15:39 -0400154 ``''``, universal newlines mode is enabled, but line endings are returned to
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000155 the caller untranslated. If it has any of the other legal values, input
156 lines are only terminated by the given string, and the line ending is
157 returned to the caller untranslated.
158
159 * On output, if *newline* is ``None``, any ``'\n'`` characters written are
160 translated to the system default line separator, :data:`os.linesep`. If
161 *newline* is ``''``, no translation takes place. If *newline* is any of
162 the other legal values, any ``'\n'`` characters written are translated to
163 the given string.
164
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000165 If *closefd* is ``False`` and a file descriptor rather than a filename was
166 given, the underlying file descriptor will be kept open when the file is
167 closed. If a filename is given *closefd* has no effect and must be ``True``
168 (the default).
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000169
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000170 The type of file object returned by the :func:`.open` function depends on the
171 mode. When :func:`.open` is used to open a file in a text mode (``'w'``,
172 ``'r'``, ``'wt'``, ``'rt'``, etc.), it returns a subclass of
173 :class:`TextIOBase` (specifically :class:`TextIOWrapper`). When used to open
174 a file in a binary mode with buffering, the returned class is a subclass of
175 :class:`BufferedIOBase`. The exact class varies: in read binary mode, it
176 returns a :class:`BufferedReader`; in write binary and append binary modes,
177 it returns a :class:`BufferedWriter`, and in read/write mode, it returns a
178 :class:`BufferedRandom`. When buffering is disabled, the raw stream, a
179 subclass of :class:`RawIOBase`, :class:`FileIO`, is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000180
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000181 It is also possible to use an :class:`unicode` or :class:`bytes` string
182 as a file for both reading and writing. For :class:`unicode` strings
183 :class:`StringIO` can be used like a file opened in text mode,
184 and for :class:`bytes` a :class:`BytesIO` can be used like a
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000185 file opened in a binary mode.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000186
187
188.. exception:: BlockingIOError
189
190 Error raised when blocking would occur on a non-blocking stream. It inherits
191 :exc:`IOError`.
192
193 In addition to those of :exc:`IOError`, :exc:`BlockingIOError` has one
194 attribute:
195
196 .. attribute:: characters_written
197
198 An integer containing the number of characters written to the stream
199 before it blocked.
200
201
202.. exception:: UnsupportedOperation
203
204 An exception inheriting :exc:`IOError` and :exc:`ValueError` that is raised
205 when an unsupported operation is called on a stream.
206
207
208I/O Base Classes
209----------------
210
211.. class:: IOBase
212
213 The abstract base class for all I/O classes, acting on streams of bytes.
214 There is no public constructor.
215
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000216 This class provides empty abstract implementations for many methods
217 that derived classes can override selectively; the default
218 implementations represent a file that cannot be read, written or
219 seeked.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000220
221 Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`,
222 or :meth:`write` because their signatures will vary, implementations and
223 clients should consider those methods part of the interface. Also,
224 implementations may raise a :exc:`IOError` when operations they do not
225 support are called.
226
227 The basic type used for binary data read from or written to a file is
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000228 :class:`bytes` (also known as :class:`str`). :class:`bytearray`\s are
229 accepted too, and in some cases (such as :class:`readinto`) required.
230 Text I/O classes work with :class:`unicode` data.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000231
232 Note that calling any method (even inquiries) on a closed stream is
233 undefined. Implementations may raise :exc:`IOError` in this case.
234
235 IOBase (and its subclasses) support the iterator protocol, meaning that an
236 :class:`IOBase` object can be iterated over yielding the lines in a stream.
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000237 Lines are defined slightly differently depending on whether the stream is
238 a binary stream (yielding :class:`bytes`), or a text stream (yielding
Meador Inge52957182011-12-03 12:13:42 -0600239 :class:`unicode` strings). See :meth:`~IOBase.readline` below.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000240
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000241 IOBase is also a context manager and therefore supports the
242 :keyword:`with` statement. In this example, *file* is closed after the
243 :keyword:`with` statement's suite is finished---even if an exception occurs::
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000244
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000245 with io.open('spam.txt', 'w') as file:
246 file.write(u'Spam and eggs!')
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000247
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000248 :class:`IOBase` provides these data attributes and methods:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000249
250 .. method:: close()
251
Amaury Forgeot d'Arc32265652008-11-20 23:34:31 +0000252 Flush and close this stream. This method has no effect if the file is
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000253 already closed. Once the file is closed, any operation on the file
Georg Brandl64879522010-05-10 21:51:33 +0000254 (e.g. reading or writing) will raise a :exc:`ValueError`.
Antoine Pitrou689405e2010-04-28 19:57:33 +0000255
256 As a convenience, it is allowed to call this method more than once;
257 only the first call, however, will have an effect.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000258
259 .. attribute:: closed
260
261 True if the stream is closed.
262
263 .. method:: fileno()
264
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000265 Return the underlying file descriptor (an integer) of the stream if it
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000266 exists. An :exc:`IOError` is raised if the IO object does not use a file
267 descriptor.
268
269 .. method:: flush()
270
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000271 Flush the write buffers of the stream if applicable. This does nothing
272 for read-only and non-blocking streams.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000273
274 .. method:: isatty()
275
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000276 Return ``True`` if the stream is interactive (i.e., connected to
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000277 a terminal/tty device).
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000278
279 .. method:: readable()
280
Serhiy Storchaka26d936a2013-11-29 12:16:53 +0200281 Return ``True`` if the stream can be read from. If ``False``, :meth:`read`
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000282 will raise :exc:`IOError`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000283
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000284 .. method:: readline(limit=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000285
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000286 Read and return one line from the stream. If *limit* is specified, at
287 most *limit* bytes will be read.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000288
289 The line terminator is always ``b'\n'`` for binary files; for text files,
Zachary Warea2dd3b22014-07-18 09:11:48 -0500290 the *newline* argument to :func:`.open` can be used to select the line
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000291 terminator(s) recognized.
292
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000293 .. method:: readlines(hint=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000294
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000295 Read and return a list of lines from the stream. *hint* can be specified
296 to control the number of lines read: no more lines will be read if the
297 total size (in bytes/characters) of all lines so far exceeds *hint*.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000298
Ezio Melotti1b332062013-04-15 19:08:31 +0300299 Note that it's already possible to iterate on file objects using ``for
300 line in file: ...`` without calling ``file.readlines()``.
301
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000302 .. method:: seek(offset, whence=SEEK_SET)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000303
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000304 Change the stream position to the given byte *offset*. *offset* is
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000305 interpreted relative to the position indicated by *whence*. Values for
306 *whence* are:
307
Georg Brandl88ed8f22009-04-01 21:00:55 +0000308 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
309 *offset* should be zero or positive
310 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
311 be negative
312 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
313 negative
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000314
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000315 Return the new absolute position.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000316
Georg Brandl88ed8f22009-04-01 21:00:55 +0000317 .. versionadded:: 2.7
318 The ``SEEK_*`` constants
319
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000320 .. method:: seekable()
321
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000322 Return ``True`` if the stream supports random access. If ``False``,
323 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`IOError`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000324
325 .. method:: tell()
326
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000327 Return the current stream position.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000328
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000329 .. method:: truncate(size=None)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000330
Antoine Pitrou9fe61992010-05-29 12:06:13 +0000331 Resize the stream to the given *size* in bytes (or the current position
332 if *size* is not specified). The current stream position isn't changed.
333 This resizing can extend or reduce the current file size. In case of
334 extension, the contents of the new file area depend on the platform
335 (on most systems, additional bytes are zero-filled, on Windows they're
336 undetermined). The new file size is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000337
338 .. method:: writable()
339
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000340 Return ``True`` if the stream supports writing. If ``False``,
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000341 :meth:`write` and :meth:`truncate` will raise :exc:`IOError`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000342
343 .. method:: writelines(lines)
344
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000345 Write a list of lines to the stream. Line separators are not added, so it
346 is usual for each of the lines provided to have a line separator at the
347 end.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000348
Benjamin Petersonefda5582014-06-14 18:51:34 -0700349 .. method:: __del__()
350
351 Prepare for object destruction. :class:`IOBase` provides a default
352 implementation of this method that calls the instance's
353 :meth:`~IOBase.close` method.
354
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000355
356.. class:: RawIOBase
357
358 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
359 public constructor.
360
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000361 Raw binary I/O typically provides low-level access to an underlying OS
362 device or API, and does not try to encapsulate it in high-level primitives
363 (this is left to Buffered I/O and Text I/O, described later in this page).
364
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000365 In addition to the attributes and methods from :class:`IOBase`,
366 RawIOBase provides the following methods:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000367
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000368 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000369
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000370 Read up to *n* bytes from the object and return them. As a convenience,
371 if *n* is unspecified or -1, :meth:`readall` is called. Otherwise,
372 only one system call is ever made. Fewer than *n* bytes may be
373 returned if the operating system call returns fewer than *n* bytes.
374
375 If 0 bytes are returned, and *n* was not 0, this indicates end of file.
376 If the object is in non-blocking mode and no bytes are available,
377 ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000378
379 .. method:: readall()
380
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000381 Read and return all the bytes from the stream until EOF, using multiple
382 calls to the stream if necessary.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000383
384 .. method:: readinto(b)
385
Daniel Stutzbach27f5a7e2010-11-30 17:58:13 +0000386 Read up to len(b) bytes into bytearray *b* and return the number
387 of bytes read. If the object is in non-blocking mode and no
388 bytes are available, ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000389
390 .. method:: write(b)
391
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000392 Write the given bytes or bytearray object, *b*, to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000393 stream and return the number of bytes written. This can be less than
394 ``len(b)``, depending on specifics of the underlying raw stream, and
395 especially if it is in non-blocking mode. ``None`` is returned if the
396 raw stream is set not to block and no single byte could be readily
397 written to it.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000398
399
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000400.. class:: BufferedIOBase
401
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000402 Base class for binary streams that support some kind of buffering.
403 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000404
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000405 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
406 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
407 input as requested or to consume all given output, at the expense of
408 making perhaps more than one system call.
409
410 In addition, those methods can raise :exc:`BlockingIOError` if the
411 underlying raw stream is in non-blocking mode and cannot take or give
412 enough data; unlike their :class:`RawIOBase` counterparts, they will
413 never return ``None``.
414
415 Besides, the :meth:`read` method does not have a default
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000416 implementation that defers to :meth:`readinto`.
417
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000418 A typical :class:`BufferedIOBase` implementation should not inherit from a
419 :class:`RawIOBase` implementation, but wrap one, like
420 :class:`BufferedWriter` and :class:`BufferedReader` do.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000421
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700422 :class:`BufferedIOBase` provides or overrides these methods and attribute in
423 addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000424
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000425 .. attribute:: raw
426
427 The underlying raw stream (a :class:`RawIOBase` instance) that
428 :class:`BufferedIOBase` deals with. This is not part of the
429 :class:`BufferedIOBase` API and may not exist on some implementations.
430
431 .. method:: detach()
432
433 Separate the underlying raw stream from the buffer and return it.
434
435 After the raw stream has been detached, the buffer is in an unusable
436 state.
437
438 Some buffers, like :class:`BytesIO`, do not have the concept of a single
439 raw stream to return from this method. They raise
440 :exc:`UnsupportedOperation`.
441
442 .. versionadded:: 2.7
443
444 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000445
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000446 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000447 negative, data is read and returned until EOF is reached. An empty bytes
448 object is returned if the stream is already at EOF.
449
450 If the argument is positive, and the underlying raw stream is not
451 interactive, multiple raw reads may be issued to satisfy the byte count
452 (unless EOF is reached first). But for interactive raw streams, at most
453 one raw read will be issued, and a short result does not imply that EOF is
454 imminent.
455
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000456 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
457 non blocking-mode, and has no data available at the moment.
458
459 .. method:: read1(n=-1)
460
461 Read and return up to *n* bytes, with at most one call to the underlying
462 raw stream's :meth:`~RawIOBase.read` method. This can be useful if you
463 are implementing your own buffering on top of a :class:`BufferedIOBase`
464 object.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000465
466 .. method:: readinto(b)
467
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000468 Read up to len(b) bytes into bytearray *b* and return the number of bytes
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000469 read.
470
471 Like :meth:`read`, multiple reads may be issued to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000472 stream, unless the latter is 'interactive'.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000473
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000474 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
475 non blocking-mode, and has no data available at the moment.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000476
477 .. method:: write(b)
478
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000479 Write the given bytes or bytearray object, *b* and return the number
480 of bytes written (never less than ``len(b)``, since if the write fails
481 an :exc:`IOError` will be raised). Depending on the actual
482 implementation, these bytes may be readily written to the underlying
483 stream, or held in a buffer for performance and latency reasons.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000484
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000485 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
486 data needed to be written to the raw stream but it couldn't accept
487 all the data without blocking.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000488
489
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000490Raw File I/O
491------------
492
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000493.. class:: FileIO(name, mode='r', closefd=True)
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000494
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000495 :class:`FileIO` represents an OS-level file containing bytes data.
496 It implements the :class:`RawIOBase` interface (and therefore the
497 :class:`IOBase` interface, too).
498
499 The *name* can be one of two things:
500
501 * a string representing the path to the file which will be opened;
502 * an integer representing the number of an existing OS-level file descriptor
503 to which the resulting :class:`FileIO` object will give access.
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000504
505 The *mode* can be ``'r'``, ``'w'`` or ``'a'`` for reading (default), writing,
506 or appending. The file will be created if it doesn't exist when opened for
507 writing or appending; it will be truncated when opened for writing. Add a
508 ``'+'`` to the mode to allow simultaneous reading and writing.
509
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000510 The :meth:`read` (when called with a positive argument), :meth:`readinto`
511 and :meth:`write` methods on this class will only make one system call.
512
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000513 In addition to the attributes and methods from :class:`IOBase` and
514 :class:`RawIOBase`, :class:`FileIO` provides the following data
515 attributes and methods:
516
517 .. attribute:: mode
518
519 The mode as given in the constructor.
520
521 .. attribute:: name
522
523 The file name. This is the file descriptor of the file when no name is
524 given in the constructor.
525
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000526
527Buffered Streams
528----------------
529
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000530Buffered I/O streams provide a higher-level interface to an I/O device
531than raw I/O does.
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000532
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000533.. class:: BytesIO([initial_bytes])
534
535 A stream implementation using an in-memory bytes buffer. It inherits
536 :class:`BufferedIOBase`.
537
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000538 The argument *initial_bytes* is an optional initial :class:`bytes`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000539
540 :class:`BytesIO` provides or overrides these methods in addition to those
541 from :class:`BufferedIOBase` and :class:`IOBase`:
542
543 .. method:: getvalue()
544
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000545 Return ``bytes`` containing the entire contents of the buffer.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000546
547 .. method:: read1()
548
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000549 In :class:`BytesIO`, this is the same as :meth:`read`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000550
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000551
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000552.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000553
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000554 A buffer providing higher-level access to a readable, sequential
555 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
556 When reading data from this object, a larger amount of data may be
557 requested from the underlying raw stream, and kept in an internal buffer.
558 The buffered data can then be returned directly on subsequent reads.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000559
560 The constructor creates a :class:`BufferedReader` for the given readable
561 *raw* stream and *buffer_size*. If *buffer_size* is omitted,
562 :data:`DEFAULT_BUFFER_SIZE` is used.
563
564 :class:`BufferedReader` provides or overrides these methods in addition to
565 those from :class:`BufferedIOBase` and :class:`IOBase`:
566
567 .. method:: peek([n])
568
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000569 Return bytes from the stream without advancing the position. At most one
570 single read on the raw stream is done to satisfy the call. The number of
571 bytes returned may be less or more than requested.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000572
573 .. method:: read([n])
574
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000575 Read and return *n* bytes, or if *n* is not given or negative, until EOF
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000576 or if the read call would block in non-blocking mode.
577
578 .. method:: read1(n)
579
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000580 Read and return up to *n* bytes with only one call on the raw stream. If
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000581 at least one byte is buffered, only buffered bytes are returned.
582 Otherwise, one raw stream read call is made.
583
584
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000585.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000586
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000587 A buffer providing higher-level access to a writeable, sequential
588 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
589 When writing to this object, data is normally held into an internal
590 buffer. The buffer will be written out to the underlying :class:`RawIOBase`
591 object under various conditions, including:
592
593 * when the buffer gets too small for all pending data;
594 * when :meth:`flush()` is called;
595 * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects);
596 * when the :class:`BufferedWriter` object is closed or destroyed.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000597
598 The constructor creates a :class:`BufferedWriter` for the given writeable
599 *raw* stream. If the *buffer_size* is not given, it defaults to
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000600 :data:`DEFAULT_BUFFER_SIZE`.
601
602 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000603
604 :class:`BufferedWriter` provides or overrides these methods in addition to
605 those from :class:`BufferedIOBase` and :class:`IOBase`:
606
607 .. method:: flush()
608
609 Force bytes held in the buffer into the raw stream. A
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000610 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000611
612 .. method:: write(b)
613
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000614 Write the bytes or bytearray object, *b* and return the number of bytes
615 written. When in non-blocking mode, a :exc:`BlockingIOError` is raised
616 if the buffer needs to be written out but the raw stream blocks.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000617
618
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000619.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000620
621 A buffered interface to random access streams. It inherits
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000622 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
623 :meth:`seek` and :meth:`tell` functionality.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000624
625 The constructor creates a reader and writer for a seekable raw stream, given
626 in the first argument. If the *buffer_size* is omitted it defaults to
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000627 :data:`DEFAULT_BUFFER_SIZE`.
628
629 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000630
631 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
632 :class:`BufferedWriter` can do.
633
634
Antoine Pitroub3843562011-08-20 19:51:31 +0200635.. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
636
637 A buffered I/O object combining two unidirectional :class:`RawIOBase`
638 objects -- one readable, the other writeable -- into a single bidirectional
639 endpoint. It inherits :class:`BufferedIOBase`.
640
641 *reader* and *writer* are :class:`RawIOBase` objects that are readable and
642 writeable respectively. If the *buffer_size* is omitted it defaults to
643 :data:`DEFAULT_BUFFER_SIZE`.
644
645 A fourth argument, *max_buffer_size*, is supported, but unused and
646 deprecated.
647
648 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
649 except for :meth:`~BufferedIOBase.detach`, which raises
650 :exc:`UnsupportedOperation`.
651
652 .. warning::
Éric Araujo69d09652014-03-12 19:35:54 -0400653
Antoine Pitroub3843562011-08-20 19:51:31 +0200654 :class:`BufferedRWPair` does not attempt to synchronize accesses to
655 its underlying raw streams. You should not pass it the same object
656 as reader and writer; use :class:`BufferedRandom` instead.
657
658
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000659Text I/O
660--------
661
662.. class:: TextIOBase
663
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000664 Base class for text streams. This class provides an unicode character
665 and line based interface to stream I/O. There is no :meth:`readinto`
666 method because Python's :class:`unicode` strings are immutable.
667 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000668
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000669 :class:`TextIOBase` provides or overrides these data attributes and
670 methods in addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000671
672 .. attribute:: encoding
673
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000674 The name of the encoding used to decode the stream's bytes into
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000675 strings, and to encode strings into bytes.
676
Antoine Pitrou19690592009-06-12 20:14:08 +0000677 .. attribute:: errors
678
679 The error setting of the decoder or encoder.
680
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000681 .. attribute:: newlines
682
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000683 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000684 translated so far. Depending on the implementation and the initial
685 constructor flags, this may not be available.
686
687 .. attribute:: buffer
688
689 The underlying binary buffer (a :class:`BufferedIOBase` instance) that
690 :class:`TextIOBase` deals with. This is not part of the
691 :class:`TextIOBase` API and may not exist on some implementations.
692
693 .. method:: detach()
694
695 Separate the underlying binary buffer from the :class:`TextIOBase` and
696 return it.
697
698 After the underlying buffer has been detached, the :class:`TextIOBase` is
699 in an unusable state.
700
701 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
702 have the concept of an underlying buffer and calling this method will
703 raise :exc:`UnsupportedOperation`.
704
705 .. versionadded:: 2.7
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000706
707 .. method:: read(n)
708
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000709 Read and return at most *n* characters from the stream as a single
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000710 :class:`unicode`. If *n* is negative or ``None``, reads until EOF.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000711
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200712 .. method:: readline(limit=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000713
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000714 Read until newline or EOF and return a single ``unicode``. If the
715 stream is already at EOF, an empty string is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000716
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200717 If *limit* is specified, at most *limit* characters will be read.
718
Antoine Pitrou8fc732f2012-01-21 20:27:59 +0100719 .. method:: seek(offset, whence=SEEK_SET)
720
721 Change the stream position to the given *offset*. Behaviour depends
722 on the *whence* parameter:
723
724 * :data:`SEEK_SET` or ``0``: seek from the start of the stream
725 (the default); *offset* must either be a number returned by
726 :meth:`TextIOBase.tell`, or zero. Any other *offset* value
727 produces undefined behaviour.
728 * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
729 *offset* must be zero, which is a no-operation (all other values
730 are unsupported).
731 * :data:`SEEK_END` or ``2``: seek to the end of the stream;
732 *offset* must be zero (all other values are unsupported).
733
734 Return the new absolute position as an opaque number.
735
736 .. versionadded:: 2.7
737 The ``SEEK_*`` constants.
738
739 .. method:: tell()
740
741 Return the current stream position as an opaque number. The number
742 does not usually represent a number of bytes in the underlying
743 binary storage.
744
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000745 .. method:: write(s)
746
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000747 Write the :class:`unicode` string *s* to the stream and return the
748 number of characters written.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000749
750
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000751.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000752
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000753 A buffered text stream over a :class:`BufferedIOBase` binary stream.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000754 It inherits :class:`TextIOBase`.
755
756 *encoding* gives the name of the encoding that the stream will be decoded or
757 encoded with. It defaults to :func:`locale.getpreferredencoding`.
758
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000759 *errors* is an optional string that specifies how encoding and decoding
760 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
761 exception if there is an encoding error (the default of ``None`` has the same
762 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
763 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Benjamin Petersona7d09032008-04-19 19:47:34 +0000764 (such as ``'?'``) to be inserted where there is malformed data. When
765 writing, ``'xmlcharrefreplace'`` (replace with the appropriate XML character
766 reference) or ``'backslashreplace'`` (replace with backslashed escape
767 sequences) can be used. Any other error handling name that has been
768 registered with :func:`codecs.register_error` is also valid.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000769
R David Murray5618aaa2012-08-15 11:15:39 -0400770 .. index::
771 single: universal newlines; io.TextIOWrapper class
772
Antoine Pitrou76370f42012-08-04 00:55:38 +0200773 *newline* controls how line endings are handled. It can be ``None``,
774 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
775
R David Murray5618aaa2012-08-15 11:15:39 -0400776 * On input, if *newline* is ``None``, :term:`universal newlines` mode is
R David Murrayc7b8f802012-08-15 11:22:58 -0400777 enabled. Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``,
778 and these are translated into ``'\n'`` before being returned to the
779 caller. If it is ``''``, universal newlines mode is enabled, but line
780 endings are returned to the caller untranslated. If it has any of the
781 other legal values, input lines are only terminated by the given string,
782 and the line ending is returned to the caller untranslated.
Antoine Pitrou76370f42012-08-04 00:55:38 +0200783
784 * On output, if *newline* is ``None``, any ``'\n'`` characters written are
785 translated to the system default line separator, :data:`os.linesep`. If
786 *newline* is ``''``, no translation takes place. If *newline* is any of
787 the other legal values, any ``'\n'`` characters written are translated to
788 the given string.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000789
790 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
791 write contains a newline character.
792
Antoine Pitrou19690592009-06-12 20:14:08 +0000793 :class:`TextIOWrapper` provides one attribute in addition to those of
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000794 :class:`TextIOBase` and its parents:
795
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000796 .. attribute:: line_buffering
797
798 Whether line buffering is enabled.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000799
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000800
Antoine Pitrou8a2e22e2014-02-02 22:48:25 +0100801.. class:: StringIO(initial_value=u'', newline=u'\\n')
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000802
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000803 An in-memory stream for unicode text. It inherits :class:`TextIOWrapper`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000804
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000805 The initial value of the buffer (an empty unicode string by default) can
806 be set by providing *initial_value*. The *newline* argument works like
Antoine Pitrou8a2e22e2014-02-02 22:48:25 +0100807 that of :class:`TextIOWrapper`. The default is to consider only ``\n``
808 characters as end of lines and to do no newline translation.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000809
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000810 :class:`StringIO` provides this method in addition to those from
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000811 :class:`TextIOWrapper` and its parents:
812
813 .. method:: getvalue()
814
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000815 Return a ``unicode`` containing the entire contents of the buffer at any
816 time before the :class:`StringIO` object's :meth:`close` method is
817 called.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000818
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000819 Example usage::
820
821 import io
822
823 output = io.StringIO()
824 output.write(u'First line.\n')
825 output.write(u'Second line.\n')
826
827 # Retrieve file contents -- this will be
828 # u'First line.\nSecond line.\n'
829 contents = output.getvalue()
830
831 # Close object and discard memory buffer --
832 # .getvalue() will now raise an exception.
833 output.close()
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000834
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000835
R David Murray5618aaa2012-08-15 11:15:39 -0400836.. index::
837 single: universal newlines; io.IncrementalNewlineDecoder class
838
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000839.. class:: IncrementalNewlineDecoder
840
R David Murray5618aaa2012-08-15 11:15:39 -0400841 A helper codec that decodes newlines for :term:`universal newlines` mode.
842 It inherits :class:`codecs.IncrementalDecoder`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000843
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000844
845Advanced topics
846---------------
847
848Here we will discuss several advanced topics pertaining to the concrete
849I/O implementations described above.
850
851Performance
852^^^^^^^^^^^
853
854Binary I/O
855""""""""""
856
857By reading and writing only large chunks of data even when the user asks
858for a single byte, buffered I/O is designed to hide any inefficiency in
859calling and executing the operating system's unbuffered I/O routines. The
860gain will vary very much depending on the OS and the kind of I/O which is
861performed (for example, on some contemporary OSes such as Linux, unbuffered
862disk I/O can be as fast as buffered I/O). The bottom line, however, is
863that buffered I/O will offer you predictable performance regardless of the
864platform and the backing device. Therefore, it is most always preferable to
865use buffered I/O rather than unbuffered I/O.
866
867Text I/O
868""""""""
869
870Text I/O over a binary storage (such as a file) is significantly slower than
871binary I/O over the same storage, because it implies conversions from
872unicode to binary data using a character codec. This can become noticeable
873if you handle huge amounts of text data (for example very large log files).
Antoine Pitrou893e7c62011-02-04 20:17:53 +0000874Also, :meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both
875quite slow due to the reconstruction algorithm used.
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000876
877:class:`StringIO`, however, is a native in-memory unicode container and will
878exhibit similar speed to :class:`BytesIO`.
879
880Multi-threading
881^^^^^^^^^^^^^^^
882
883:class:`FileIO` objects are thread-safe to the extent that the operating
884system calls (such as ``read(2)`` under Unix) they are wrapping are thread-safe
885too.
886
887Binary buffered objects (instances of :class:`BufferedReader`,
888:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
889protect their internal structures using a lock; it is therefore safe to call
890them from multiple threads at once.
891
892:class:`TextIOWrapper` objects are not thread-safe.
893
894Reentrancy
895^^^^^^^^^^
896
897Binary buffered objects (instances of :class:`BufferedReader`,
898:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
899are not reentrant. While reentrant calls will not happen in normal situations,
900they can arise if you are doing I/O in a :mod:`signal` handler. If it is
901attempted to enter a buffered object again while already being accessed
902*from the same thread*, then a :exc:`RuntimeError` is raised.
903
904The above implicitly extends to text files, since the :func:`open()`
905function will wrap a buffered object inside a :class:`TextIOWrapper`. This
906includes standard streams and therefore affects the built-in function
907:func:`print()` as well.
908