blob: 899408687b71555a17dac3007a6db0d8cdd33985 [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
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000281 Return ``True`` if the stream can be read from. If False, :meth:`read`
282 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,
Georg Brandl9fa61bb2009-07-26 14:19:57 +0000290 the *newlines* 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
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000299 .. method:: seek(offset, whence=SEEK_SET)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000300
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000301 Change the stream position to the given byte *offset*. *offset* is
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000302 interpreted relative to the position indicated by *whence*. Values for
303 *whence* are:
304
Georg Brandl88ed8f22009-04-01 21:00:55 +0000305 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default);
306 *offset* should be zero or positive
307 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may
308 be negative
309 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually
310 negative
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000311
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000312 Return the new absolute position.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000313
Georg Brandl88ed8f22009-04-01 21:00:55 +0000314 .. versionadded:: 2.7
315 The ``SEEK_*`` constants
316
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000317 .. method:: seekable()
318
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000319 Return ``True`` if the stream supports random access. If ``False``,
320 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`IOError`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000321
322 .. method:: tell()
323
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000324 Return the current stream position.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000325
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000326 .. method:: truncate(size=None)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000327
Antoine Pitrou9fe61992010-05-29 12:06:13 +0000328 Resize the stream to the given *size* in bytes (or the current position
329 if *size* is not specified). The current stream position isn't changed.
330 This resizing can extend or reduce the current file size. In case of
331 extension, the contents of the new file area depend on the platform
332 (on most systems, additional bytes are zero-filled, on Windows they're
333 undetermined). The new file size is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000334
335 .. method:: writable()
336
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000337 Return ``True`` if the stream supports writing. If ``False``,
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000338 :meth:`write` and :meth:`truncate` will raise :exc:`IOError`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000339
340 .. method:: writelines(lines)
341
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000342 Write a list of lines to the stream. Line separators are not added, so it
343 is usual for each of the lines provided to have a line separator at the
344 end.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000345
346
347.. class:: RawIOBase
348
349 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
350 public constructor.
351
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000352 Raw binary I/O typically provides low-level access to an underlying OS
353 device or API, and does not try to encapsulate it in high-level primitives
354 (this is left to Buffered I/O and Text I/O, described later in this page).
355
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000356 In addition to the attributes and methods from :class:`IOBase`,
357 RawIOBase provides the following methods:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000358
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000359 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000360
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000361 Read up to *n* bytes from the object and return them. As a convenience,
362 if *n* is unspecified or -1, :meth:`readall` is called. Otherwise,
363 only one system call is ever made. Fewer than *n* bytes may be
364 returned if the operating system call returns fewer than *n* bytes.
365
366 If 0 bytes are returned, and *n* was not 0, this indicates end of file.
367 If the object is in non-blocking mode and no bytes are available,
368 ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000369
370 .. method:: readall()
371
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000372 Read and return all the bytes from the stream until EOF, using multiple
373 calls to the stream if necessary.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000374
375 .. method:: readinto(b)
376
Daniel Stutzbach27f5a7e2010-11-30 17:58:13 +0000377 Read up to len(b) bytes into bytearray *b* and return the number
378 of bytes read. If the object is in non-blocking mode and no
379 bytes are available, ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000380
381 .. method:: write(b)
382
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000383 Write the given bytes or bytearray object, *b*, to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000384 stream and return the number of bytes written. This can be less than
385 ``len(b)``, depending on specifics of the underlying raw stream, and
386 especially if it is in non-blocking mode. ``None`` is returned if the
387 raw stream is set not to block and no single byte could be readily
388 written to it.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000389
390
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000391.. class:: BufferedIOBase
392
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000393 Base class for binary streams that support some kind of buffering.
394 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000395
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000396 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
397 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
398 input as requested or to consume all given output, at the expense of
399 making perhaps more than one system call.
400
401 In addition, those methods can raise :exc:`BlockingIOError` if the
402 underlying raw stream is in non-blocking mode and cannot take or give
403 enough data; unlike their :class:`RawIOBase` counterparts, they will
404 never return ``None``.
405
406 Besides, the :meth:`read` method does not have a default
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000407 implementation that defers to :meth:`readinto`.
408
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000409 A typical :class:`BufferedIOBase` implementation should not inherit from a
410 :class:`RawIOBase` implementation, but wrap one, like
411 :class:`BufferedWriter` and :class:`BufferedReader` do.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000412
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700413 :class:`BufferedIOBase` provides or overrides these methods and attribute in
414 addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000415
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000416 .. attribute:: raw
417
418 The underlying raw stream (a :class:`RawIOBase` instance) that
419 :class:`BufferedIOBase` deals with. This is not part of the
420 :class:`BufferedIOBase` API and may not exist on some implementations.
421
422 .. method:: detach()
423
424 Separate the underlying raw stream from the buffer and return it.
425
426 After the raw stream has been detached, the buffer is in an unusable
427 state.
428
429 Some buffers, like :class:`BytesIO`, do not have the concept of a single
430 raw stream to return from this method. They raise
431 :exc:`UnsupportedOperation`.
432
433 .. versionadded:: 2.7
434
435 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000436
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000437 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000438 negative, data is read and returned until EOF is reached. An empty bytes
439 object is returned if the stream is already at EOF.
440
441 If the argument is positive, and the underlying raw stream is not
442 interactive, multiple raw reads may be issued to satisfy the byte count
443 (unless EOF is reached first). But for interactive raw streams, at most
444 one raw read will be issued, and a short result does not imply that EOF is
445 imminent.
446
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000447 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
448 non blocking-mode, and has no data available at the moment.
449
450 .. method:: read1(n=-1)
451
452 Read and return up to *n* bytes, with at most one call to the underlying
453 raw stream's :meth:`~RawIOBase.read` method. This can be useful if you
454 are implementing your own buffering on top of a :class:`BufferedIOBase`
455 object.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000456
457 .. method:: readinto(b)
458
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000459 Read up to len(b) bytes into bytearray *b* and return the number of bytes
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000460 read.
461
462 Like :meth:`read`, multiple reads may be issued to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000463 stream, unless the latter is 'interactive'.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000464
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000465 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
466 non blocking-mode, and has no data available at the moment.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000467
468 .. method:: write(b)
469
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000470 Write the given bytes or bytearray object, *b* and return the number
471 of bytes written (never less than ``len(b)``, since if the write fails
472 an :exc:`IOError` will be raised). Depending on the actual
473 implementation, these bytes may be readily written to the underlying
474 stream, or held in a buffer for performance and latency reasons.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000475
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000476 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
477 data needed to be written to the raw stream but it couldn't accept
478 all the data without blocking.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000479
480
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000481Raw File I/O
482------------
483
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000484.. class:: FileIO(name, mode='r', closefd=True)
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000485
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000486 :class:`FileIO` represents an OS-level file containing bytes data.
487 It implements the :class:`RawIOBase` interface (and therefore the
488 :class:`IOBase` interface, too).
489
490 The *name* can be one of two things:
491
492 * a string representing the path to the file which will be opened;
493 * an integer representing the number of an existing OS-level file descriptor
494 to which the resulting :class:`FileIO` object will give access.
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000495
496 The *mode* can be ``'r'``, ``'w'`` or ``'a'`` for reading (default), writing,
497 or appending. The file will be created if it doesn't exist when opened for
498 writing or appending; it will be truncated when opened for writing. Add a
499 ``'+'`` to the mode to allow simultaneous reading and writing.
500
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000501 The :meth:`read` (when called with a positive argument), :meth:`readinto`
502 and :meth:`write` methods on this class will only make one system call.
503
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000504 In addition to the attributes and methods from :class:`IOBase` and
505 :class:`RawIOBase`, :class:`FileIO` provides the following data
506 attributes and methods:
507
508 .. attribute:: mode
509
510 The mode as given in the constructor.
511
512 .. attribute:: name
513
514 The file name. This is the file descriptor of the file when no name is
515 given in the constructor.
516
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000517
518Buffered Streams
519----------------
520
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000521Buffered I/O streams provide a higher-level interface to an I/O device
522than raw I/O does.
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000523
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000524.. class:: BytesIO([initial_bytes])
525
526 A stream implementation using an in-memory bytes buffer. It inherits
527 :class:`BufferedIOBase`.
528
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000529 The argument *initial_bytes* is an optional initial :class:`bytes`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000530
531 :class:`BytesIO` provides or overrides these methods in addition to those
532 from :class:`BufferedIOBase` and :class:`IOBase`:
533
534 .. method:: getvalue()
535
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000536 Return ``bytes`` containing the entire contents of the buffer.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000537
538 .. method:: read1()
539
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000540 In :class:`BytesIO`, this is the same as :meth:`read`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000541
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000542
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000543.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000544
Antoine Pitrouc9062ca2009-10-01 17:08:03 +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.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +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
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000560 Return bytes from the stream without advancing the position. At most one
561 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.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000563
564 .. method:: read([n])
565
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000566 Read and return *n* bytes, or if *n* is not given or negative, until EOF
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000567 or if the read call would block in non-blocking mode.
568
569 .. method:: read1(n)
570
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000571 Read and return up to *n* bytes with only one call on the raw stream. If
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000572 at least one byte is buffered, only buffered bytes are returned.
573 Otherwise, one raw stream read call is made.
574
575
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000576.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000577
Antoine Pitrouc9062ca2009-10-01 17:08:03 +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.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +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
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000591 :data:`DEFAULT_BUFFER_SIZE`.
592
593 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +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
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000601 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000602
603 .. method:: write(b)
604
Antoine Pitrouc9062ca2009-10-01 17:08:03 +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.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000608
609
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000610.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000611
612 A buffered interface to random access streams. It inherits
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000613 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
614 :meth:`seek` and :meth:`tell` functionality.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000615
616 The constructor creates a reader and writer for a seekable raw stream, given
617 in the first argument. If the *buffer_size* is omitted it defaults to
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000618 :data:`DEFAULT_BUFFER_SIZE`.
619
620 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000621
622 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
623 :class:`BufferedWriter` can do.
624
625
Antoine Pitroub3843562011-08-20 19:51:31 +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
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000649Text I/O
650--------
651
652.. class:: TextIOBase
653
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000654 Base class for text streams. This class provides an unicode character
655 and line based interface to stream I/O. There is no :meth:`readinto`
656 method because Python's :class:`unicode` strings are immutable.
657 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000658
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000659 :class:`TextIOBase` provides or overrides these data attributes and
660 methods in addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000661
662 .. attribute:: encoding
663
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000664 The name of the encoding used to decode the stream's bytes into
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000665 strings, and to encode strings into bytes.
666
Antoine Pitrou19690592009-06-12 20:14:08 +0000667 .. attribute:: errors
668
669 The error setting of the decoder or encoder.
670
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000671 .. attribute:: newlines
672
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000673 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000674 translated so far. Depending on the implementation and the initial
675 constructor flags, this may not be available.
676
677 .. 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
683 .. method:: detach()
684
685 Separate the underlying binary buffer from the :class:`TextIOBase` and
686 return it.
687
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
695 .. versionadded:: 2.7
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000696
697 .. method:: read(n)
698
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000699 Read and return at most *n* characters from the stream as a single
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000700 :class:`unicode`. If *n* is negative or ``None``, reads until EOF.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000701
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200702 .. method:: readline(limit=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000703
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000704 Read until newline or EOF and return a single ``unicode``. If the
705 stream is already at EOF, an empty string is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000706
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200707 If *limit* is specified, at most *limit* characters will be read.
708
Antoine Pitrou8fc732f2012-01-21 20:27:59 +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:: 2.7
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
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000735 .. method:: write(s)
736
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000737 Write the :class:`unicode` string *s* to the stream and return the
738 number of characters written.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000739
740
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000741.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000742
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000743 A buffered text stream over a :class:`BufferedIOBase` binary stream.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +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 Peterson53be57e2008-04-19 19:34:05 +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
Benjamin Petersona7d09032008-04-19 19:47:34 +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.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000759
R David Murray5618aaa2012-08-15 11:15:39 -0400760 .. index::
761 single: universal newlines; io.TextIOWrapper class
762
Antoine Pitrou76370f42012-08-04 00:55:38 +0200763 *newline* controls how line endings are handled. It can be ``None``,
764 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
765
R David Murray5618aaa2012-08-15 11:15:39 -0400766 * On input, if *newline* is ``None``, :term:`universal newlines` mode is
R David Murrayc7b8f802012-08-15 11:22:58 -0400767 enabled. Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``,
768 and these are translated into ``'\n'`` before being returned to the
769 caller. If it is ``''``, universal newlines mode is enabled, but line
770 endings are returned to the caller untranslated. If it has any of the
771 other legal values, input lines are only terminated by the given string,
772 and the line ending is returned to the caller untranslated.
Antoine Pitrou76370f42012-08-04 00:55:38 +0200773
774 * On output, if *newline* is ``None``, any ``'\n'`` characters written are
775 translated to the system default line separator, :data:`os.linesep`. If
776 *newline* is ``''``, no translation takes place. If *newline* is any of
777 the other legal values, any ``'\n'`` characters written are translated to
778 the given string.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000779
780 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
781 write contains a newline character.
782
Antoine Pitrou19690592009-06-12 20:14:08 +0000783 :class:`TextIOWrapper` provides one attribute in addition to those of
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000784 :class:`TextIOBase` and its parents:
785
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000786 .. attribute:: line_buffering
787
788 Whether line buffering is enabled.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000789
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000790
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000791.. class:: StringIO(initial_value=u'', newline=None)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000792
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000793 An in-memory stream for unicode text. It inherits :class:`TextIOWrapper`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000794
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000795 The initial value of the buffer (an empty unicode string by default) can
796 be set by providing *initial_value*. The *newline* argument works like
797 that of :class:`TextIOWrapper`. The default is to do no newline
798 translation.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000799
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000800 :class:`StringIO` provides this method in addition to those from
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000801 :class:`TextIOWrapper` and its parents:
802
803 .. method:: getvalue()
804
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000805 Return a ``unicode`` containing the entire contents of the buffer at any
806 time before the :class:`StringIO` object's :meth:`close` method is
807 called.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000808
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000809 Example usage::
810
811 import io
812
813 output = io.StringIO()
814 output.write(u'First line.\n')
815 output.write(u'Second line.\n')
816
817 # Retrieve file contents -- this will be
818 # u'First line.\nSecond line.\n'
819 contents = output.getvalue()
820
821 # Close object and discard memory buffer --
822 # .getvalue() will now raise an exception.
823 output.close()
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000824
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000825
R David Murray5618aaa2012-08-15 11:15:39 -0400826.. index::
827 single: universal newlines; io.IncrementalNewlineDecoder class
828
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000829.. class:: IncrementalNewlineDecoder
830
R David Murray5618aaa2012-08-15 11:15:39 -0400831 A helper codec that decodes newlines for :term:`universal newlines` mode.
832 It inherits :class:`codecs.IncrementalDecoder`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000833
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000834
835Advanced topics
836---------------
837
838Here we will discuss several advanced topics pertaining to the concrete
839I/O implementations described above.
840
841Performance
842^^^^^^^^^^^
843
844Binary I/O
845""""""""""
846
847By reading and writing only large chunks of data even when the user asks
848for a single byte, buffered I/O is designed to hide any inefficiency in
849calling and executing the operating system's unbuffered I/O routines. The
850gain will vary very much depending on the OS and the kind of I/O which is
851performed (for example, on some contemporary OSes such as Linux, unbuffered
852disk I/O can be as fast as buffered I/O). The bottom line, however, is
853that buffered I/O will offer you predictable performance regardless of the
854platform and the backing device. Therefore, it is most always preferable to
855use buffered I/O rather than unbuffered I/O.
856
857Text I/O
858""""""""
859
860Text I/O over a binary storage (such as a file) is significantly slower than
861binary I/O over the same storage, because it implies conversions from
862unicode to binary data using a character codec. This can become noticeable
863if you handle huge amounts of text data (for example very large log files).
Antoine Pitrou893e7c62011-02-04 20:17:53 +0000864Also, :meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both
865quite slow due to the reconstruction algorithm used.
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000866
867:class:`StringIO`, however, is a native in-memory unicode container and will
868exhibit similar speed to :class:`BytesIO`.
869
870Multi-threading
871^^^^^^^^^^^^^^^
872
873:class:`FileIO` objects are thread-safe to the extent that the operating
874system calls (such as ``read(2)`` under Unix) they are wrapping are thread-safe
875too.
876
877Binary buffered objects (instances of :class:`BufferedReader`,
878:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
879protect their internal structures using a lock; it is therefore safe to call
880them from multiple threads at once.
881
882:class:`TextIOWrapper` objects are not thread-safe.
883
884Reentrancy
885^^^^^^^^^^
886
887Binary buffered objects (instances of :class:`BufferedReader`,
888:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
889are not reentrant. While reentrant calls will not happen in normal situations,
890they can arise if you are doing I/O in a :mod:`signal` handler. If it is
891attempted to enter a buffered object again while already being accessed
892*from the same thread*, then a :exc:`RuntimeError` is raised.
893
894The above implicitly extends to text files, since the :func:`open()`
895function will wrap a buffered object inside a :class:`TextIOWrapper`. This
896includes standard streams and therefore affects the built-in function
897:func:`print()` as well.
898