blob: 543bb373c563a6001d61256d101b683571cdc36c [file] [log] [blame]
Georg Brandl014197c2008-04-09 18:40:51 +00001:mod:`io` --- Core tools for working with streams
2=================================================
3
4.. module:: io
5 :synopsis: Core tools for working with streams.
6.. moduleauthor:: Guido van Rossum <guido@python.org>
7.. moduleauthor:: Mike Verdone <mike.verdone@gmail.com>
8.. moduleauthor:: Mark Russell <mark.russell@zen.co.uk>
9.. sectionauthor:: Benjamin Peterson
10
11The :mod:`io` module provides the Python interfaces to stream handling. The
12builtin :func:`open` function is defined in this module.
13
14At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It
15defines the basic interface to a stream. Note, however, that there is no
16seperation between reading and writing to streams; implementations are allowed
17to throw an :exc:`IOError` if they do not support a given operation.
18
19Extending :class:`IOBase` is :class:`RawIOBase` which deals simply with the
20reading and writing of raw bytes to a stream. :class:`FileIO` subclasses
Mark Summerfielde6d5f302008-04-21 10:29:45 +000021:class:`RawIOBase` to provide an interface to files in the machine's
22file system.
Georg Brandl014197c2008-04-09 18:40:51 +000023
24:class:`BufferedIOBase` deals with buffering on a raw byte stream
25(:class:`RawIOBase`). Its subclasses, :class:`BufferedWriter`,
26:class:`BufferedReader`, and :class:`BufferedRWPair` buffer streams that are
Mark Summerfielde6d5f302008-04-21 10:29:45 +000027readable, writable, and both readable and writable.
28:class:`BufferedRandom` provides a buffered interface to random access
29streams. :class:`BytesIO` is a simple stream of in-memory bytes.
Georg Brandl014197c2008-04-09 18:40:51 +000030
Mark Summerfielde6d5f302008-04-21 10:29:45 +000031Another :class:`IOBase` subclass, :class:`TextIOBase`, deals with
32streams whose bytes represent text, and handles encoding and decoding
33from and to strings. :class:`TextIOWrapper`, which extends it, is a
34buffered text interface to a buffered raw stream
35(:class:`BufferedIOBase`). Finally, :class:`StringIO` is an in-memory
36stream for text.
Georg Brandl014197c2008-04-09 18:40:51 +000037
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000038Argument names are not part of the specification, and only the arguments of
Benjamin Petersonb85a5842008-04-13 21:39:58 +000039:func:`open` are intended to be used as keyword arguments.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000040
Georg Brandl014197c2008-04-09 18:40:51 +000041
42Module Interface
43----------------
44
45.. data:: DEFAULT_BUFFER_SIZE
46
47 An int containing the default buffer size used by the module's buffered I/O
Benjamin Petersonb85a5842008-04-13 21:39:58 +000048 classes. :func:`open` uses the file's blksize (as obtained by
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000049 :func:`os.stat`) if possible.
Georg Brandl014197c2008-04-09 18:40:51 +000050
51.. function:: open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
52
Benjamin Petersondd219122008-04-11 21:17:32 +000053 Open *file* and return a stream. If the file cannot be opened, an
54 :exc:`IOError` is raised.
Georg Brandl014197c2008-04-09 18:40:51 +000055
Benjamin Petersondd219122008-04-11 21:17:32 +000056 *file* is either a string giving the name (and the path if the file isn't in
Mark Summerfielde6d5f302008-04-21 10:29:45 +000057 the current working directory) of the file to be opened or a file
58 descriptor of the file to be opened. (If a file descriptor is given,
59 for example, from :func:`os.fdopen`, it is closed when the returned
60 I/O object is closed, unless *closefd* is set to ``False``.)
Georg Brandl014197c2008-04-09 18:40:51 +000061
Benjamin Petersondd219122008-04-11 21:17:32 +000062 *mode* is an optional string that specifies the mode in which the file is
63 opened. It defaults to ``'r'`` which means open for reading in text mode.
64 Other common values are ``'w'`` for writing (truncating the file if it
65 already exists), and ``'a'`` for appending (which on *some* Unix systems,
66 means that *all* writes append to the end of the file regardless of the
67 current seek position). In text mode, if *encoding* is not specified the
68 encoding used is platform dependent. (For reading and writing raw bytes use
69 binary mode and leave *encoding* unspecified.) The available modes are:
Georg Brandl014197c2008-04-09 18:40:51 +000070
71 ========= ===============================================================
72 Character Meaning
73 --------- ---------------------------------------------------------------
74 ``'r'`` open for reading (default)
75 ``'w'`` open for writing, truncating the file first
76 ``'a'`` open for writing, appending to the end of the file if it exists
77 ``'b'`` binary mode
78 ``'t'`` text mode (default)
79 ``'+'`` open a disk file for updating (reading and writing)
Mark Summerfielde6d5f302008-04-21 10:29:45 +000080 ``'U'`` universal newline mode (for backwards compatibility; should
81 not be used in new code)
Georg Brandl014197c2008-04-09 18:40:51 +000082 ========= ===============================================================
83
84 The default mode is ``'rt'`` (open for reading text). For binary random
85 access, the mode ``'w+b'`` opens and truncates the file to 0 bytes, while
86 ``'r+b'`` opens the file without truncation.
87
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000088 Python distinguishes between files opened in binary and text modes, even when
89 the underlying operating system doesn't. Files opened in binary mode
Mark Summerfielde6d5f302008-04-21 10:29:45 +000090 (including ``'b'`` in the *mode* argument) return contents as ``bytes``
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000091 objects without any decoding. In text mode (the default, or when ``'t'`` is
Mark Summerfielde6d5f302008-04-21 10:29:45 +000092 included in the *mode* argument), the contents of the file are returned as
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000093 strings, the bytes having been first decoded using a platform-dependent
94 encoding or using the specified *encoding* if given.
Benjamin Petersondd219122008-04-11 21:17:32 +000095
96 *buffering* is an optional integer used to set the buffering policy. By
Benjamin Peterson2c5f8282008-04-13 00:27:46 +000097 default full buffering is on. Pass 0 to switch buffering off (only allowed
98 in binary mode), 1 to set line buffering, and an integer > 1 for full
99 buffering.
Georg Brandl014197c2008-04-09 18:40:51 +0000100
101 *encoding* is the name of the encoding used to decode or encode the file.
Benjamin Petersondd219122008-04-11 21:17:32 +0000102 This should only be used in text mode. The default encoding is platform
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000103 dependent, but any encoding supported by Python can be used. See the
Benjamin Petersondd219122008-04-11 21:17:32 +0000104 :mod:`codecs` module for the list of supported encodings.
Georg Brandl014197c2008-04-09 18:40:51 +0000105
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000106 *errors* is an optional string that specifies how encoding and decoding
Christian Heimesa342c012008-04-20 21:01:16 +0000107 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
108 exception if there is an encoding error (the default of ``None`` has the same
109 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
110 errors can lead to data loss.) ``'replace'`` causes a replacement marker
111 (such as ``'?'``) to be inserted where there is malformed data. When
112 writing, ``'xmlcharrefreplace'`` (replace with the appropriate XML character
113 reference) or ``'backslashreplace'`` (replace with backslashed escape
114 sequences) can be used. Any other error handling name that has been
115 registered with :func:`codecs.register_error` is also valid.
Georg Brandl014197c2008-04-09 18:40:51 +0000116
117 *newline* controls how universal newlines works (it only applies to text
118 mode). It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It
119 works as follows:
120
121 * On input, if *newline* is ``None``, universal newlines mode is enabled.
122 Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``, and these
123 are translated into ``'\n'`` before being returned to the caller. If it is
124 ``''``, universal newline mode is enabled, but line endings are returned to
125 the caller untranslated. If it has any of the other legal values, input
126 lines are only terminated by the given string, and the line ending is
127 returned to the caller untranslated.
128
129 * On output, if *newline* is ``None``, any ``'\n'`` characters written are
130 translated to the system default line separator, :data:`os.linesep`. If
131 *newline* is ``''``, no translation takes place. If *newline* is any of
132 the other legal values, any ``'\n'`` characters written are translated to
133 the given string.
134
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000135 If *closefd* is ``False`` and a file descriptor rather than a
136 filename was given, the underlying file descriptor will be kept open
137 when the file is closed. If a filename is given *closefd* has no
138 effect but must be ``True`` (the default).
Georg Brandl014197c2008-04-09 18:40:51 +0000139
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000140 The type of file object returned by the :func:`open` function depends
141 on the mode. When :func:`open` is used to open a file in a text mode
142 (``'w'``, ``'r'``, ``'wt'``, ``'rt'``, etc.), it returns a
143 :class:`TextIOWrapper`. When used to open a file in a binary mode,
144 the returned class varies: in read binary mode, it returns a
145 :class:`BufferedReader`; in write binary and append binary modes, it
146 returns a :class:`BufferedWriter`, and in read/write mode, it returns
147 a :class:`BufferedRandom`.
Georg Brandl014197c2008-04-09 18:40:51 +0000148
149 It is also possible to use a string or bytearray as a file for both reading
Benjamin Petersondd219122008-04-11 21:17:32 +0000150 and writing. For strings :class:`StringIO` can be used like a file opened in
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000151 a text mode, and for bytearrays a :class:`BytesIO` can be used like a
152 file opened in a binary mode.
Georg Brandl014197c2008-04-09 18:40:51 +0000153
154
155.. exception:: BlockingIOError
156
157 Error raised when blocking would occur on a non-blocking stream. It inherits
158 :exc:`IOError`.
159
160 In addition to those of :exc:`IOError`, :exc:`BlockingIOError` has one
161 attribute:
162
163 .. attribute:: characters_written
164
165 An integer containing the number of characters written to the stream
166 before it blocked.
167
168
169.. exception:: UnsupportedOperation
170
171 An exception inheriting :exc:`IOError` and :exc:`ValueError` that is raised
172 when an unsupported operation is called on a stream.
173
174
175I/O Base Classes
176----------------
177
178.. class:: IOBase
179
180 The abstract base class for all I/O classes, acting on streams of bytes.
181 There is no public constructor.
182
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000183 This class provides empty abstract implementations for many methods
184 that derived classes can override selectively; the default
185 implementations represent a file that cannot be read, written or
186 seeked.
Georg Brandl014197c2008-04-09 18:40:51 +0000187
188 Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`,
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000189 or :meth:`write` because their signatures will vary, implementations and
190 clients should consider those methods part of the interface. Also,
191 implementations may raise a :exc:`IOError` when operations they do not
192 support are called.
Georg Brandl014197c2008-04-09 18:40:51 +0000193
194 The basic type used for binary data read from or written to a file is
195 :class:`bytes`. :class:`bytearray`\s are accepted too, and in some cases
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000196 (such as :class:`readinto`) required. Text I/O classes work with
197 :class:`str` data.
Georg Brandl014197c2008-04-09 18:40:51 +0000198
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000199 Note that calling any method (even inquiries) on a closed stream is
200 undefined. Implementations may raise :exc:`IOError` in this case.
Georg Brandl014197c2008-04-09 18:40:51 +0000201
202 IOBase (and its subclasses) support the iterator protocol, meaning that an
203 :class:`IOBase` object can be iterated over yielding the lines in a stream.
204
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000205 IOBase is also a context manager and therefore supports the
206 :keyword:`with` statement. In this example, *file* is closed after the
207 :keyword:`with` statement's suite is finished---even if an exception occurs::
Georg Brandl014197c2008-04-09 18:40:51 +0000208
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000209 with open('spam.txt', 'w') as file:
210 file.write('Spam and eggs!')
Georg Brandl014197c2008-04-09 18:40:51 +0000211
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000212 :class:`IOBase` provides these data attributes and methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000213
214 .. method:: close()
215
216 Flush and close this stream. This method has no effect if the file is
217 already closed.
218
219 .. attribute:: closed
220
221 True if the stream is closed.
222
223 .. method:: fileno()
224
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000225 Return the underlying file descriptor (an integer) of the stream if it
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000226 exists. An :exc:`IOError` is raised if the IO object does not use a file
Georg Brandl014197c2008-04-09 18:40:51 +0000227 descriptor.
228
229 .. method:: flush()
230
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000231 Flush the write buffers of the stream if applicable. This does nothing
232 for read-only and non-blocking streams.
Georg Brandl014197c2008-04-09 18:40:51 +0000233
234 .. method:: isatty()
235
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000236 Return ``True`` if the stream is interactive (i.e., connected to
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000237 a terminal/tty device).
Georg Brandl014197c2008-04-09 18:40:51 +0000238
239 .. method:: readable()
240
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000241 Return ``True`` if the stream can be read from. If False, :meth:`read`
242 will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000243
244 .. method:: readline([limit])
245
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000246 Read and return one line from the stream. If *limit* is specified, at
247 most *limit* bytes will be read.
Georg Brandl014197c2008-04-09 18:40:51 +0000248
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000249 The line terminator is always ``b'\n'`` for binary files; for text files,
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000250 the *newlines* argument to :func:`open` can be used to select the line
Georg Brandl014197c2008-04-09 18:40:51 +0000251 terminator(s) recognized.
252
253 .. method:: readlines([hint])
254
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000255 Read and return a list of lines from the stream. *hint* can be specified
256 to control the number of lines read: no more lines will be read if the
257 total size (in bytes/characters) of all lines so far exceeds *hint*.
Georg Brandl014197c2008-04-09 18:40:51 +0000258
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000259 .. method:: seek(offset[, whence])
260
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000261 Change the stream position to the given byte *offset*. *offset* is
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000262 interpreted relative to the position indicated by *whence*. Values for
263 *whence* are:
264
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000265 * ``0`` -- start of the stream (the default); *offset* should be zero or positive
266 * ``1`` -- current stream position; *offset* may be negative
267 * ``2`` -- end of the stream; *offset* is usually negative
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000268
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000269 Return the new absolute position.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000270
Georg Brandl014197c2008-04-09 18:40:51 +0000271 .. method:: seekable()
272
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000273 Return ``True`` if the stream supports random access. If ``False``,
274 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000275
276 .. method:: tell()
277
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000278 Return the current stream position.
Georg Brandl014197c2008-04-09 18:40:51 +0000279
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000280 .. method:: truncate([size])
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000281
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000282 Truncate the file to at most *size* bytes. *size* defaults to the current
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000283 file position, as returned by :meth:`tell`.
284
Georg Brandl014197c2008-04-09 18:40:51 +0000285 .. method:: writable()
286
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000287 Return ``True`` if the stream supports writing. If ``False``,
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000288 :meth:`write` and :meth:`truncate` will raise :exc:`IOError`.
Georg Brandl014197c2008-04-09 18:40:51 +0000289
290 .. method:: writelines(lines)
291
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000292 Write a list of lines to the stream. Line separators are not added, so it
293 is usual for each of the lines provided to have a line separator at the
294 end.
Georg Brandl014197c2008-04-09 18:40:51 +0000295
296
297.. class:: RawIOBase
298
299 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
300 public constructor.
301
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000302 In addition to the attributes and methods from :class:`IOBase`,
303 RawIOBase provides the following methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000304
Benjamin Petersonb47aace2008-04-09 21:38:38 +0000305 .. method:: read([n])
Georg Brandl014197c2008-04-09 18:40:51 +0000306
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000307 Read and return all the bytes from the stream until EOF, or if *n* is
308 specified, up to *n* bytes. Only one system call is ever made. An empty
309 bytes object is returned on EOF; ``None`` is returned if the object is set
310 not to block and has no data to read.
Georg Brandl014197c2008-04-09 18:40:51 +0000311
Benjamin Petersonb47aace2008-04-09 21:38:38 +0000312 .. method:: readall()
Georg Brandl014197c2008-04-09 18:40:51 +0000313
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000314 Read and return all the bytes from the stream until EOF, using multiple
315 calls to the stream if necessary.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000316
317 .. method:: readinto(b)
318
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000319 Read up to len(b) bytes into bytearray *b* and return the number of bytes
320 read.
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000321
322 .. method:: write(b)
323
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000324 Write the given bytes or bytearray object, *b*, to the underlying raw
325 stream and return the number of bytes written (This is never less than
326 ``len(b)``, since if the write fails, an :exc:`IOError` will be raised).
Georg Brandl014197c2008-04-09 18:40:51 +0000327
328
329Raw File I/O
330------------
331
332.. class:: FileIO(name[, mode])
333
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000334 :class:`FileIO` represents a file containing bytes data. It implements
Georg Brandl014197c2008-04-09 18:40:51 +0000335 the :class:`RawIOBase` interface (and therefore the :class:`IOBase`
336 interface, too).
337
338 The *mode* can be ``'r'``, ``'w'`` or ``'a'`` for reading (default), writing,
339 or appending. The file will be created if it doesn't exist when opened for
340 writing or appending; it will be truncated when opened for writing. Add a
341 ``'+'`` to the mode to allow simultaneous reading and writing.
342
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000343 In addition to the attributes and methods from :class:`IOBase` and
344 :class:`RawIOBase`, :class:`FileIO` provides the following data
345 attributes and methods:
Georg Brandl014197c2008-04-09 18:40:51 +0000346
347 .. attribute:: mode
348
349 The mode as given in the constructor.
350
351 .. attribute:: name
352
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000353 The file name. This is the file descriptor of the file when no name is
354 given in the constructor.
Georg Brandl014197c2008-04-09 18:40:51 +0000355
356 .. method:: read([n])
357
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000358 Read and return at most *n* bytes. Only one system call is made, so it is
359 possible that less data than was requested is returned. Use :func:`len`
360 on the returned bytes object to see how many bytes were actually returned.
361 (In non-blocking mode, ``None`` is returned when no data is available.)
Georg Brandl014197c2008-04-09 18:40:51 +0000362
363 .. method:: readall()
364
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000365 Read and return the entire file's contents in a single bytes object. As
366 much as immediately available is returned in non-blocking mode. If the
367 EOF has been reached, ``b''`` is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000368
Georg Brandl014197c2008-04-09 18:40:51 +0000369 .. method:: write(b)
370
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000371 Write the bytes or bytearray object, *b*, to the file, and return
372 the number actually written. Only one system call is made, so it
373 is possible that only some of the data is written.
374
375 Note that the inherited ``readinto()`` method should not be used on
376 :class:`FileIO` objects.
Georg Brandl014197c2008-04-09 18:40:51 +0000377
378
379Buffered Streams
380----------------
381
382.. class:: BufferedIOBase
383
384 Base class for streams that support buffering. It inherits :class:`IOBase`.
385 There is no public constructor.
386
387 The main difference with :class:`RawIOBase` is that the :meth:`read` method
388 supports omitting the *size* argument, and does not have a default
389 implementation that defers to :meth:`readinto`.
390
391 In addition, :meth:`read`, :meth:`readinto`, and :meth:`write` may raise
392 :exc:`BlockingIOError` if the underlying raw stream is in non-blocking mode
393 and not ready; unlike their raw counterparts, they will never return
394 ``None``.
395
396 A typical implementation should not inherit from a :class:`RawIOBase`
397 implementation, but wrap one like :class:`BufferedWriter` and
398 :class:`BufferedReader`.
399
400 :class:`BufferedIOBase` provides or overrides these methods in addition to
401 those from :class:`IOBase`:
402
403 .. method:: read([n])
404
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000405 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
Georg Brandl014197c2008-04-09 18:40:51 +0000406 negative, data is read and returned until EOF is reached. An empty bytes
407 object is returned if the stream is already at EOF.
408
409 If the argument is positive, and the underlying raw stream is not
410 interactive, multiple raw reads may be issued to satisfy the byte count
411 (unless EOF is reached first). But for interactive raw streams, at most
412 one raw read will be issued, and a short result does not imply that EOF is
413 imminent.
414
415 A :exc:`BlockingIOError` is raised if the underlying raw stream has no
416 data at the moment.
417
418 .. method:: readinto(b)
419
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000420 Read up to len(b) bytes into bytearray *b* and return the number of bytes
Georg Brandl014197c2008-04-09 18:40:51 +0000421 read.
422
423 Like :meth:`read`, multiple reads may be issued to the underlying raw
424 stream, unless the latter is 'interactive.'
425
426 A :exc:`BlockingIOError` is raised if the underlying raw stream has no
427 data at the moment.
428
Georg Brandl014197c2008-04-09 18:40:51 +0000429 .. method:: write(b)
430
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000431 Write the given bytes or bytearray object, *b*, to the underlying raw
432 stream and return the number of bytes written (never less than ``len(b)``,
433 since if the write fails an :exc:`IOError` will be raised).
Georg Brandl014197c2008-04-09 18:40:51 +0000434
435 A :exc:`BlockingIOError` is raised if the buffer is full, and the
436 underlying raw stream cannot accept more data at the moment.
437
438
439.. class:: BytesIO([initial_bytes])
440
441 A stream implementation using an in-memory bytes buffer. It inherits
442 :class:`BufferedIOBase`.
443
444 The argument *initial_bytes* is an optional initial bytearray.
445
446 :class:`BytesIO` provides or overrides these methods in addition to those
447 from :class:`BufferedIOBase` and :class:`IOBase`:
448
449 .. method:: getvalue()
450
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000451 Return ``bytes`` containing the entire contents of the buffer.
Georg Brandl014197c2008-04-09 18:40:51 +0000452
453 .. method:: read1()
454
Benjamin Peterson9efcc4b2008-04-14 21:30:21 +0000455 In :class:`BytesIO`, this is the same as :meth:`read`.
Georg Brandl014197c2008-04-09 18:40:51 +0000456
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000457 .. method:: truncate([size])
Georg Brandl014197c2008-04-09 18:40:51 +0000458
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000459 Truncate the buffer to at most *size* bytes. *size* defaults to the
460 current stream position, as returned by :meth:`tell`.
Georg Brandl014197c2008-04-09 18:40:51 +0000461
462
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000463.. class:: BufferedReader(raw[, buffer_size])
Georg Brandl014197c2008-04-09 18:40:51 +0000464
Benjamin Peterson13d4a612008-04-13 23:46:27 +0000465 A buffer for a readable, sequential :class:`RawIOBase` object. It inherits
Georg Brandl014197c2008-04-09 18:40:51 +0000466 :class:`BufferedIOBase`.
467
468 The constructor creates a :class:`BufferedReader` for the given readable
469 *raw* stream and *buffer_size*. If *buffer_size* is omitted,
470 :data:`DEFAULT_BUFFER_SIZE` is used.
471
472 :class:`BufferedReader` provides or overrides these methods in addition to
473 those from :class:`BufferedIOBase` and :class:`IOBase`:
474
475 .. method:: peek([n])
476
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000477 Return 1 (or *n* if specified) bytes from a buffer without advancing the
478 position. Only a single read on the raw stream is done to satisfy the
479 call. The number of bytes returned may be less than requested since at
480 most all the buffer's bytes from the current position to the end are
481 returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000482
483 .. method:: read([n])
484
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000485 Read and return *n* bytes, or if *n* is not given or negative, until EOF
Georg Brandl014197c2008-04-09 18:40:51 +0000486 or if the read call would block in non-blocking mode.
487
488 .. method:: read1(n)
489
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000490 Read and return up to *n* bytes with only one call on the raw stream. If
Georg Brandl014197c2008-04-09 18:40:51 +0000491 at least one byte is buffered, only buffered bytes are returned.
492 Otherwise, one raw stream read call is made.
493
494
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000495.. class:: BufferedWriter(raw[, buffer_size[, max_buffer_size]])
Georg Brandl014197c2008-04-09 18:40:51 +0000496
497 A buffer for a writeable sequential RawIO object. It inherits
498 :class:`BufferedIOBase`.
499
500 The constructor creates a :class:`BufferedWriter` for the given writeable
501 *raw* stream. If the *buffer_size* is not given, it defaults to
502 :data:`DEAFULT_BUFFER_SIZE`. If *max_buffer_size* is omitted, it defaults to
503 twice the buffer size.
504
505 :class:`BufferedWriter` provides or overrides these methods in addition to
506 those from :class:`BufferedIOBase` and :class:`IOBase`:
507
508 .. method:: flush()
509
510 Force bytes held in the buffer into the raw stream. A
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000511 :exc:`BlockingIOError` should be raised if the raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000512
513 .. method:: write(b)
514
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000515 Write the bytes or bytearray object, *b*, onto the raw stream and return
516 the number of bytes written. A :exc:`BlockingIOError` is raised when the
517 raw stream blocks.
Georg Brandl014197c2008-04-09 18:40:51 +0000518
519
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000520.. class:: BufferedRWPair(reader, writer[, buffer_size[, max_buffer_size]])
Georg Brandl014197c2008-04-09 18:40:51 +0000521
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000522 A combined buffered writer and reader object for a raw stream that can be
523 written to and read from. It has and supports both :meth:`read`, :meth:`write`,
524 and their variants. This is useful for sockets and two-way pipes.
525 It inherits :class:`BufferedIOBase`.
Georg Brandl014197c2008-04-09 18:40:51 +0000526
527 *reader* and *writer* are :class:`RawIOBase` objects that are readable and
528 writeable respectively. If the *buffer_size* is omitted it defaults to
529 :data:`DEFAULT_BUFFER_SIZE`. The *max_buffer_size* (for the buffered writer)
530 defaults to twice the buffer size.
531
532 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods.
533
534
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000535.. class:: BufferedRandom(raw[, buffer_size[, max_buffer_size]])
Georg Brandl014197c2008-04-09 18:40:51 +0000536
537 A buffered interface to random access streams. It inherits
538 :class:`BufferedReader` and :class:`BufferedWriter`.
539
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000540 The constructor creates a reader and writer for a seekable raw stream, given
Georg Brandl014197c2008-04-09 18:40:51 +0000541 in the first argument. If the *buffer_size* is omitted it defaults to
542 :data:`DEFAULT_BUFFER_SIZE`. The *max_buffer_size* (for the buffered writer)
543 defaults to twice the buffer size.
544
545 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
546 :class:`BufferedWriter` can do.
547
548
549Text I/O
550--------
551
552.. class:: TextIOBase
553
554 Base class for text streams. This class provides a character and line based
555 interface to stream I/O. There is no :meth:`readinto` method because
556 Python's character strings are immutable. It inherits :class:`IOBase`.
557 There is no public constructor.
558
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000559 :class:`TextIOBase` provides or overrides these data attributes and
560 methods in addition to those from :class:`IOBase`:
Georg Brandl014197c2008-04-09 18:40:51 +0000561
562 .. attribute:: encoding
563
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000564 The name of the encoding used to decode the stream's bytes into
Georg Brandl014197c2008-04-09 18:40:51 +0000565 strings, and to encode strings into bytes.
566
567 .. attribute:: newlines
568
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000569 A string, a tuple of strings, or ``None``, indicating the newlines
Georg Brandl014197c2008-04-09 18:40:51 +0000570 translated so far.
571
572 .. method:: read(n)
573
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000574 Read and return at most *n* characters from the stream as a single
575 :class:`str`. If *n* is negative or ``None``, reads to EOF.
Georg Brandl014197c2008-04-09 18:40:51 +0000576
577 .. method:: readline()
578
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000579 Read until newline or EOF and return a single ``str``. If the stream is
580 already at EOF, an empty string is returned.
Georg Brandl014197c2008-04-09 18:40:51 +0000581
Georg Brandl014197c2008-04-09 18:40:51 +0000582 .. method:: write(s)
583
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000584 Write the string *s* to the stream and return the number of characters
585 written.
Georg Brandl014197c2008-04-09 18:40:51 +0000586
587
588.. class:: TextIOWrapper(buffer[, encoding[, errors[, newline[, line_buffering]]]])
589
590 A buffered text stream over a :class:`BufferedIOBase` raw stream, *buffer*.
591 It inherits :class:`TextIOBase`.
592
593 *encoding* gives the name of the encoding that the stream will be decoded or
594 encoded with. It defaults to :func:`locale.getpreferredencoding`.
595
Benjamin Petersonb85a5842008-04-13 21:39:58 +0000596 *errors* is an optional string that specifies how encoding and decoding
597 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
598 exception if there is an encoding error (the default of ``None`` has the same
599 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding
600 errors can lead to data loss.) ``'replace'`` causes a replacement marker
Christian Heimesa342c012008-04-20 21:01:16 +0000601 (such as ``'?'``) to be inserted where there is malformed data. When
602 writing, ``'xmlcharrefreplace'`` (replace with the appropriate XML character
603 reference) or ``'backslashreplace'`` (replace with backslashed escape
604 sequences) can be used. Any other error handling name that has been
605 registered with :func:`codecs.register_error` is also valid.
Georg Brandl014197c2008-04-09 18:40:51 +0000606
607 *newline* can be ``None``, ``''``, ``'\n'``, ``'\r'``, or ``'\r\n'``. It
608 controls the handling of line endings. If it is ``None``, universal newlines
609 is enabled. With this enabled, on input, the lines endings ``'\n'``,
610 ``'\r'``, or ``'\r\n'`` are translated to ``'\n'`` before being returned to
611 the caller. Conversely, on output, ``'\n'`` is translated to the system
612 default line seperator, :data:`os.linesep`. If *newline* is any other of its
613 legal values, that newline becomes the newline when the file is read and it
614 is returned untranslated. On output, ``'\n'`` is converted to the *newline*.
615
616 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
617 write contains a newline character.
618
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000619 :class:`TextIOWrapper` provides these data attributes in addition to those of
Georg Brandl014197c2008-04-09 18:40:51 +0000620 :class:`TextIOBase` and its parents:
621
622 .. attribute:: errors
623
624 The encoding and decoding error setting.
625
626 .. attribute:: line_buffering
627
628 Whether line buffering is enabled.
629
630
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000631.. class:: StringIO([initial_value[, encoding[, errors[, newline]]]])
Georg Brandl014197c2008-04-09 18:40:51 +0000632
Georg Brandl2932d932008-05-30 06:27:09 +0000633 An in-memory stream for text. It inherits :class:`TextIOWrapper`.
Georg Brandl014197c2008-04-09 18:40:51 +0000634
Georg Brandl2932d932008-05-30 06:27:09 +0000635 Create a new StringIO stream with an initial value, encoding, error handling,
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000636 and newline setting. See :class:`TextIOWrapper`\'s constructor for more
Georg Brandl014197c2008-04-09 18:40:51 +0000637 information.
638
Mark Summerfielde6d5f302008-04-21 10:29:45 +0000639 :class:`StringIO` provides this method in addition to those from
Georg Brandl014197c2008-04-09 18:40:51 +0000640 :class:`TextIOWrapper` and its parents:
641
642 .. method:: getvalue()
643
Georg Brandl2932d932008-05-30 06:27:09 +0000644 Return a ``str`` containing the entire contents of the buffer at any
645 time before the :class:`StringIO` object's :meth:`close` method is
646 called.
Georg Brandl014197c2008-04-09 18:40:51 +0000647
Georg Brandl2932d932008-05-30 06:27:09 +0000648 Example usage::
649
650 import io
651
652 output = io.StringIO()
653 output.write('First line.\n')
654 print('Second line.', file=output)
655
656 # Retrieve file contents -- this will be
657 # 'First line.\nSecond line.\n'
658 contents = output.getvalue()
659
660 # Close object and discard memory buffer --
661 # .getvalue() will now raise an exception.
662 output.close()
Georg Brandl014197c2008-04-09 18:40:51 +0000663
664.. class:: IncrementalNewlineDecoder
665
Benjamin Peterson2c5f8282008-04-13 00:27:46 +0000666 A helper codec that decodes newlines for universal newlines mode. It
667 inherits :class:`codecs.IncrementalDecoder`.
Georg Brandl014197c2008-04-09 18:40:51 +0000668