blob: c2f5155a91dc771f80e6f99bbca21c32ffa36d8a [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,
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
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
349
350.. class:: RawIOBase
351
352 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
353 public constructor.
354
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000355 Raw binary I/O typically provides low-level access to an underlying OS
356 device or API, and does not try to encapsulate it in high-level primitives
357 (this is left to Buffered I/O and Text I/O, described later in this page).
358
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000359 In addition to the attributes and methods from :class:`IOBase`,
360 RawIOBase provides the following methods:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000361
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000362 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000363
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000364 Read up to *n* bytes from the object and return them. As a convenience,
365 if *n* is unspecified or -1, :meth:`readall` is called. Otherwise,
366 only one system call is ever made. Fewer than *n* bytes may be
367 returned if the operating system call returns fewer than *n* bytes.
368
369 If 0 bytes are returned, and *n* was not 0, this indicates end of file.
370 If the object is in non-blocking mode and no bytes are available,
371 ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000372
373 .. method:: readall()
374
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000375 Read and return all the bytes from the stream until EOF, using multiple
376 calls to the stream if necessary.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000377
378 .. method:: readinto(b)
379
Daniel Stutzbach27f5a7e2010-11-30 17:58:13 +0000380 Read up to len(b) bytes into bytearray *b* and return the number
381 of bytes read. If the object is in non-blocking mode and no
382 bytes are available, ``None`` is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000383
384 .. method:: write(b)
385
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000386 Write the given bytes or bytearray object, *b*, to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000387 stream and return the number of bytes written. This can be less than
388 ``len(b)``, depending on specifics of the underlying raw stream, and
389 especially if it is in non-blocking mode. ``None`` is returned if the
390 raw stream is set not to block and no single byte could be readily
391 written to it.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000392
393
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000394.. class:: BufferedIOBase
395
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000396 Base class for binary streams that support some kind of buffering.
397 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000398
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000399 The main difference with :class:`RawIOBase` is that methods :meth:`read`,
400 :meth:`readinto` and :meth:`write` will try (respectively) to read as much
401 input as requested or to consume all given output, at the expense of
402 making perhaps more than one system call.
403
404 In addition, those methods can raise :exc:`BlockingIOError` if the
405 underlying raw stream is in non-blocking mode and cannot take or give
406 enough data; unlike their :class:`RawIOBase` counterparts, they will
407 never return ``None``.
408
409 Besides, the :meth:`read` method does not have a default
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000410 implementation that defers to :meth:`readinto`.
411
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000412 A typical :class:`BufferedIOBase` implementation should not inherit from a
413 :class:`RawIOBase` implementation, but wrap one, like
414 :class:`BufferedWriter` and :class:`BufferedReader` do.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000415
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700416 :class:`BufferedIOBase` provides or overrides these methods and attribute in
417 addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000418
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000419 .. attribute:: raw
420
421 The underlying raw stream (a :class:`RawIOBase` instance) that
422 :class:`BufferedIOBase` deals with. This is not part of the
423 :class:`BufferedIOBase` API and may not exist on some implementations.
424
425 .. method:: detach()
426
427 Separate the underlying raw stream from the buffer and return it.
428
429 After the raw stream has been detached, the buffer is in an unusable
430 state.
431
432 Some buffers, like :class:`BytesIO`, do not have the concept of a single
433 raw stream to return from this method. They raise
434 :exc:`UnsupportedOperation`.
435
436 .. versionadded:: 2.7
437
438 .. method:: read(n=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000439
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000440 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000441 negative, data is read and returned until EOF is reached. An empty bytes
442 object is returned if the stream is already at EOF.
443
444 If the argument is positive, and the underlying raw stream is not
445 interactive, multiple raw reads may be issued to satisfy the byte count
446 (unless EOF is reached first). But for interactive raw streams, at most
447 one raw read will be issued, and a short result does not imply that EOF is
448 imminent.
449
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000450 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
451 non blocking-mode, and has no data available at the moment.
452
453 .. method:: read1(n=-1)
454
455 Read and return up to *n* bytes, with at most one call to the underlying
456 raw stream's :meth:`~RawIOBase.read` method. This can be useful if you
457 are implementing your own buffering on top of a :class:`BufferedIOBase`
458 object.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000459
460 .. method:: readinto(b)
461
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000462 Read up to len(b) bytes into bytearray *b* and return the number of bytes
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000463 read.
464
465 Like :meth:`read`, multiple reads may be issued to the underlying raw
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000466 stream, unless the latter is 'interactive'.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000467
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000468 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
469 non blocking-mode, and has no data available at the moment.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000470
471 .. method:: write(b)
472
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000473 Write the given bytes or bytearray object, *b* and return the number
474 of bytes written (never less than ``len(b)``, since if the write fails
475 an :exc:`IOError` will be raised). Depending on the actual
476 implementation, these bytes may be readily written to the underlying
477 stream, or held in a buffer for performance and latency reasons.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000478
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000479 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the
480 data needed to be written to the raw stream but it couldn't accept
481 all the data without blocking.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000482
483
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000484Raw File I/O
485------------
486
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000487.. class:: FileIO(name, mode='r', closefd=True)
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000488
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000489 :class:`FileIO` represents an OS-level file containing bytes data.
490 It implements the :class:`RawIOBase` interface (and therefore the
491 :class:`IOBase` interface, too).
492
493 The *name* can be one of two things:
494
495 * a string representing the path to the file which will be opened;
496 * an integer representing the number of an existing OS-level file descriptor
497 to which the resulting :class:`FileIO` object will give access.
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000498
499 The *mode* can be ``'r'``, ``'w'`` or ``'a'`` for reading (default), writing,
500 or appending. The file will be created if it doesn't exist when opened for
501 writing or appending; it will be truncated when opened for writing. Add a
502 ``'+'`` to the mode to allow simultaneous reading and writing.
503
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000504 The :meth:`read` (when called with a positive argument), :meth:`readinto`
505 and :meth:`write` methods on this class will only make one system call.
506
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000507 In addition to the attributes and methods from :class:`IOBase` and
508 :class:`RawIOBase`, :class:`FileIO` provides the following data
509 attributes and methods:
510
511 .. attribute:: mode
512
513 The mode as given in the constructor.
514
515 .. attribute:: name
516
517 The file name. This is the file descriptor of the file when no name is
518 given in the constructor.
519
Benjamin Petersonb6c7beb2009-01-19 16:17:54 +0000520
521Buffered Streams
522----------------
523
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000524Buffered I/O streams provide a higher-level interface to an I/O device
525than raw I/O does.
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000526
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000527.. class:: BytesIO([initial_bytes])
528
529 A stream implementation using an in-memory bytes buffer. It inherits
530 :class:`BufferedIOBase`.
531
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000532 The argument *initial_bytes* is an optional initial :class:`bytes`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000533
534 :class:`BytesIO` provides or overrides these methods in addition to those
535 from :class:`BufferedIOBase` and :class:`IOBase`:
536
537 .. method:: getvalue()
538
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000539 Return ``bytes`` containing the entire contents of the buffer.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000540
541 .. method:: read1()
542
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000543 In :class:`BytesIO`, this is the same as :meth:`read`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000544
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000545
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000546.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000547
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000548 A buffer providing higher-level access to a readable, sequential
549 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
550 When reading data from this object, a larger amount of data may be
551 requested from the underlying raw stream, and kept in an internal buffer.
552 The buffered data can then be returned directly on subsequent reads.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000553
554 The constructor creates a :class:`BufferedReader` for the given readable
555 *raw* stream and *buffer_size*. If *buffer_size* is omitted,
556 :data:`DEFAULT_BUFFER_SIZE` is used.
557
558 :class:`BufferedReader` provides or overrides these methods in addition to
559 those from :class:`BufferedIOBase` and :class:`IOBase`:
560
561 .. method:: peek([n])
562
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000563 Return bytes from the stream without advancing the position. At most one
564 single read on the raw stream is done to satisfy the call. The number of
565 bytes returned may be less or more than requested.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000566
567 .. method:: read([n])
568
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000569 Read and return *n* bytes, or if *n* is not given or negative, until EOF
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000570 or if the read call would block in non-blocking mode.
571
572 .. method:: read1(n)
573
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000574 Read and return up to *n* bytes with only one call on the raw stream. If
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000575 at least one byte is buffered, only buffered bytes are returned.
576 Otherwise, one raw stream read call is made.
577
578
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000579.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000580
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000581 A buffer providing higher-level access to a writeable, sequential
582 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`.
583 When writing to this object, data is normally held into an internal
584 buffer. The buffer will be written out to the underlying :class:`RawIOBase`
585 object under various conditions, including:
586
587 * when the buffer gets too small for all pending data;
588 * when :meth:`flush()` is called;
589 * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects);
590 * when the :class:`BufferedWriter` object is closed or destroyed.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000591
592 The constructor creates a :class:`BufferedWriter` for the given writeable
593 *raw* stream. If the *buffer_size* is not given, it defaults to
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000594 :data:`DEFAULT_BUFFER_SIZE`.
595
596 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000597
598 :class:`BufferedWriter` provides or overrides these methods in addition to
599 those from :class:`BufferedIOBase` and :class:`IOBase`:
600
601 .. method:: flush()
602
603 Force bytes held in the buffer into the raw stream. A
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000604 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000605
606 .. method:: write(b)
607
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000608 Write the bytes or bytearray object, *b* and return the number of bytes
609 written. When in non-blocking mode, a :exc:`BlockingIOError` is raised
610 if the buffer needs to be written out but the raw stream blocks.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000611
612
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000613.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000614
615 A buffered interface to random access streams. It inherits
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000616 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
617 :meth:`seek` and :meth:`tell` functionality.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000618
619 The constructor creates a reader and writer for a seekable raw stream, given
620 in the first argument. If the *buffer_size* is omitted it defaults to
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000621 :data:`DEFAULT_BUFFER_SIZE`.
622
623 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000624
625 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
626 :class:`BufferedWriter` can do.
627
628
Antoine Pitroub3843562011-08-20 19:51:31 +0200629.. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE)
630
631 A buffered I/O object combining two unidirectional :class:`RawIOBase`
632 objects -- one readable, the other writeable -- into a single bidirectional
633 endpoint. It inherits :class:`BufferedIOBase`.
634
635 *reader* and *writer* are :class:`RawIOBase` objects that are readable and
636 writeable respectively. If the *buffer_size* is omitted it defaults to
637 :data:`DEFAULT_BUFFER_SIZE`.
638
639 A fourth argument, *max_buffer_size*, is supported, but unused and
640 deprecated.
641
642 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods
643 except for :meth:`~BufferedIOBase.detach`, which raises
644 :exc:`UnsupportedOperation`.
645
646 .. warning::
647 :class:`BufferedRWPair` does not attempt to synchronize accesses to
648 its underlying raw streams. You should not pass it the same object
649 as reader and writer; use :class:`BufferedRandom` instead.
650
651
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000652Text I/O
653--------
654
655.. class:: TextIOBase
656
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000657 Base class for text streams. This class provides an unicode character
658 and line based interface to stream I/O. There is no :meth:`readinto`
659 method because Python's :class:`unicode` strings are immutable.
660 It inherits :class:`IOBase`. There is no public constructor.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000661
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000662 :class:`TextIOBase` provides or overrides these data attributes and
663 methods in addition to those from :class:`IOBase`:
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000664
665 .. attribute:: encoding
666
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000667 The name of the encoding used to decode the stream's bytes into
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000668 strings, and to encode strings into bytes.
669
Antoine Pitrou19690592009-06-12 20:14:08 +0000670 .. attribute:: errors
671
672 The error setting of the decoder or encoder.
673
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000674 .. attribute:: newlines
675
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000676 A string, a tuple of strings, or ``None``, indicating the newlines
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000677 translated so far. Depending on the implementation and the initial
678 constructor flags, this may not be available.
679
680 .. attribute:: buffer
681
682 The underlying binary buffer (a :class:`BufferedIOBase` instance) that
683 :class:`TextIOBase` deals with. This is not part of the
684 :class:`TextIOBase` API and may not exist on some implementations.
685
686 .. method:: detach()
687
688 Separate the underlying binary buffer from the :class:`TextIOBase` and
689 return it.
690
691 After the underlying buffer has been detached, the :class:`TextIOBase` is
692 in an unusable state.
693
694 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not
695 have the concept of an underlying buffer and calling this method will
696 raise :exc:`UnsupportedOperation`.
697
698 .. versionadded:: 2.7
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000699
700 .. method:: read(n)
701
Benjamin Peterson3c399d12008-04-22 02:16:03 +0000702 Read and return at most *n* characters from the stream as a single
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000703 :class:`unicode`. If *n* is negative or ``None``, reads until EOF.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000704
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200705 .. method:: readline(limit=-1)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000706
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000707 Read until newline or EOF and return a single ``unicode``. If the
708 stream is already at EOF, an empty string is returned.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000709
Antoine Pitroub37f14c2012-07-25 22:38:33 +0200710 If *limit* is specified, at most *limit* characters will be read.
711
Antoine Pitrou8fc732f2012-01-21 20:27:59 +0100712 .. method:: seek(offset, whence=SEEK_SET)
713
714 Change the stream position to the given *offset*. Behaviour depends
715 on the *whence* parameter:
716
717 * :data:`SEEK_SET` or ``0``: seek from the start of the stream
718 (the default); *offset* must either be a number returned by
719 :meth:`TextIOBase.tell`, or zero. Any other *offset* value
720 produces undefined behaviour.
721 * :data:`SEEK_CUR` or ``1``: "seek" to the current position;
722 *offset* must be zero, which is a no-operation (all other values
723 are unsupported).
724 * :data:`SEEK_END` or ``2``: seek to the end of the stream;
725 *offset* must be zero (all other values are unsupported).
726
727 Return the new absolute position as an opaque number.
728
729 .. versionadded:: 2.7
730 The ``SEEK_*`` constants.
731
732 .. method:: tell()
733
734 Return the current stream position as an opaque number. The number
735 does not usually represent a number of bytes in the underlying
736 binary storage.
737
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000738 .. method:: write(s)
739
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000740 Write the :class:`unicode` string *s* to the stream and return the
741 number of characters written.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000742
743
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000744.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000745
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000746 A buffered text stream over a :class:`BufferedIOBase` binary stream.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000747 It inherits :class:`TextIOBase`.
748
749 *encoding* gives the name of the encoding that the stream will be decoded or
750 encoded with. It defaults to :func:`locale.getpreferredencoding`.
751
Benjamin Peterson53be57e2008-04-19 19:34:05 +0000752 *errors* is an optional string that specifies how encoding and decoding
753 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
754 exception if there is an encoding error (the default of ``None`` has the same
755 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
756 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Benjamin Petersona7d09032008-04-19 19:47:34 +0000757 (such as ``'?'``) to be inserted where there is malformed data. When
758 writing, ``'xmlcharrefreplace'`` (replace with the appropriate XML character
759 reference) or ``'backslashreplace'`` (replace with backslashed escape
760 sequences) can be used. Any other error handling name that has been
761 registered with :func:`codecs.register_error` is also valid.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000762
R David Murray5618aaa2012-08-15 11:15:39 -0400763 .. index::
764 single: universal newlines; io.TextIOWrapper class
765
Antoine Pitrou76370f42012-08-04 00:55:38 +0200766 *newline* controls how line endings are handled. It can be ``None``,
767 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
768
R David Murray5618aaa2012-08-15 11:15:39 -0400769 * On input, if *newline* is ``None``, :term:`universal newlines` mode is
R David Murrayc7b8f802012-08-15 11:22:58 -0400770 enabled. Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``,
771 and these are translated into ``'\n'`` before being returned to the
772 caller. If it is ``''``, universal newlines mode is enabled, but line
773 endings are returned to the caller untranslated. If it has any of the
774 other legal values, input lines are only terminated by the given string,
775 and the line ending is returned to the caller untranslated.
Antoine Pitrou76370f42012-08-04 00:55:38 +0200776
777 * On output, if *newline* is ``None``, any ``'\n'`` characters written are
778 translated to the system default line separator, :data:`os.linesep`. If
779 *newline* is ``''``, no translation takes place. If *newline* is any of
780 the other legal values, any ``'\n'`` characters written are translated to
781 the given string.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000782
783 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
784 write contains a newline character.
785
Antoine Pitrou19690592009-06-12 20:14:08 +0000786 :class:`TextIOWrapper` provides one attribute in addition to those of
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000787 :class:`TextIOBase` and its parents:
788
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000789 .. attribute:: line_buffering
790
791 Whether line buffering is enabled.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000792
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000793
Antoine Pitrou8a2e22e2014-02-02 22:48:25 +0100794.. class:: StringIO(initial_value=u'', newline=u'\\n')
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000795
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000796 An in-memory stream for unicode text. It inherits :class:`TextIOWrapper`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000797
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000798 The initial value of the buffer (an empty unicode string by default) can
799 be set by providing *initial_value*. The *newline* argument works like
Antoine Pitrou8a2e22e2014-02-02 22:48:25 +0100800 that of :class:`TextIOWrapper`. The default is to consider only ``\n``
801 characters as end of lines and to do no newline translation.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000802
Benjamin Petersonad9f6292008-04-21 11:57:40 +0000803 :class:`StringIO` provides this method in addition to those from
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000804 :class:`TextIOWrapper` and its parents:
805
806 .. method:: getvalue()
807
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000808 Return a ``unicode`` containing the entire contents of the buffer at any
809 time before the :class:`StringIO` object's :meth:`close` method is
810 called.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000811
Antoine Pitrouc9062ca2009-10-01 17:08:03 +0000812 Example usage::
813
814 import io
815
816 output = io.StringIO()
817 output.write(u'First line.\n')
818 output.write(u'Second line.\n')
819
820 # Retrieve file contents -- this will be
821 # u'First line.\nSecond line.\n'
822 contents = output.getvalue()
823
824 # Close object and discard memory buffer --
825 # .getvalue() will now raise an exception.
826 output.close()
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000827
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000828
R David Murray5618aaa2012-08-15 11:15:39 -0400829.. index::
830 single: universal newlines; io.IncrementalNewlineDecoder class
831
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000832.. class:: IncrementalNewlineDecoder
833
R David Murray5618aaa2012-08-15 11:15:39 -0400834 A helper codec that decodes newlines for :term:`universal newlines` mode.
835 It inherits :class:`codecs.IncrementalDecoder`.
Benjamin Peterson7bb4d2d2008-04-13 02:01:27 +0000836
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000837
838Advanced topics
839---------------
840
841Here we will discuss several advanced topics pertaining to the concrete
842I/O implementations described above.
843
844Performance
845^^^^^^^^^^^
846
847Binary I/O
848""""""""""
849
850By reading and writing only large chunks of data even when the user asks
851for a single byte, buffered I/O is designed to hide any inefficiency in
852calling and executing the operating system's unbuffered I/O routines. The
853gain will vary very much depending on the OS and the kind of I/O which is
854performed (for example, on some contemporary OSes such as Linux, unbuffered
855disk I/O can be as fast as buffered I/O). The bottom line, however, is
856that buffered I/O will offer you predictable performance regardless of the
857platform and the backing device. Therefore, it is most always preferable to
858use buffered I/O rather than unbuffered I/O.
859
860Text I/O
861""""""""
862
863Text I/O over a binary storage (such as a file) is significantly slower than
864binary I/O over the same storage, because it implies conversions from
865unicode to binary data using a character codec. This can become noticeable
866if you handle huge amounts of text data (for example very large log files).
Antoine Pitrou893e7c62011-02-04 20:17:53 +0000867Also, :meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both
868quite slow due to the reconstruction algorithm used.
Antoine Pitrou4cb64ad2010-12-03 19:31:52 +0000869
870:class:`StringIO`, however, is a native in-memory unicode container and will
871exhibit similar speed to :class:`BytesIO`.
872
873Multi-threading
874^^^^^^^^^^^^^^^
875
876:class:`FileIO` objects are thread-safe to the extent that the operating
877system calls (such as ``read(2)`` under Unix) they are wrapping are thread-safe
878too.
879
880Binary buffered objects (instances of :class:`BufferedReader`,
881:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
882protect their internal structures using a lock; it is therefore safe to call
883them from multiple threads at once.
884
885:class:`TextIOWrapper` objects are not thread-safe.
886
887Reentrancy
888^^^^^^^^^^
889
890Binary buffered objects (instances of :class:`BufferedReader`,
891:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`)
892are not reentrant. While reentrant calls will not happen in normal situations,
893they can arise if you are doing I/O in a :mod:`signal` handler. If it is
894attempted to enter a buffered object again while already being accessed
895*from the same thread*, then a :exc:`RuntimeError` is raised.
896
897The above implicitly extends to text files, since the :func:`open()`
898function will wrap a buffered object inside a :class:`TextIOWrapper`. This
899includes standard streams and therefore affects the built-in function
900:func:`print()` as well.
901