source: python/trunk/Doc/library/io.rst

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

  • Property svn:eol-style set to native
File size: 36.3 KB
RevLine 
[2]1: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>
[391]9.. moduleauthor:: Antoine Pitrou <solipsis@pitrou.net>
10.. moduleauthor:: Amaury Forgeot d'Arc <amauryfa@gmail.com>
11.. moduleauthor:: Benjamin Peterson <benjamin@python.org>
[2]12.. sectionauthor:: Benjamin Peterson <benjamin@python.org>
[391]13
[2]14.. versionadded:: 2.6
15
[391]16The :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.
[2]20
[391]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.
28
[2]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
31separation between reading and writing to streams; implementations are allowed
[391]32to raise an :exc:`IOError` if they do not support a given operation.
[2]33
34Extending :class:`IOBase` is :class:`RawIOBase` which deals simply with the
35reading and writing of raw bytes to a stream. :class:`FileIO` subclasses
36:class:`RawIOBase` to provide an interface to files in the machine's
37file system.
38
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
42readable, 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.
45
46Another :class:`IOBase` subclass, :class:`TextIOBase`, deals with
47streams whose bytes represent text, and handles encoding and decoding
[391]48from and to :class:`unicode` strings. :class:`TextIOWrapper`, which extends
49it, is a buffered text interface to a buffered raw stream
[2]50(:class:`BufferedIOBase`). Finally, :class:`StringIO` is an in-memory
[391]51stream for unicode text.
[2]52
53Argument names are not part of the specification, and only the arguments of
54:func:`.open` are intended to be used as keyword arguments.
55
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
63 classes. :func:`.open` uses the file's blksize (as obtained by
64 :func:`os.stat`) if possible.
65
[391]66.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
[2]67
[391]68 Open *file* and return a corresponding stream. If the file cannot be opened,
69 an :exc:`IOError` is raised.
[2]70
[391]71 *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``.)
[2]76
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)
[391]95 ``'U'`` universal newlines mode (for backwards compatibility; should
[2]96 not be used in new code)
97 ========= ===============================================================
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
[391]105 (including ``'b'`` in the *mode* argument) return contents as :class:`bytes`
[2]106 objects without any decoding. In text mode (the default, or when ``'t'`` is
107 included in the *mode* argument), the contents of the file are returned as
[391]108 :class:`unicode` strings, the bytes having been first decoded using a
109 platform-dependent encoding or using the specified *encoding* if given.
[2]110
111 *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.
125
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
[391]128 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.
[2]131
132 *errors* is an optional string that specifies how encoding and decoding
[391]133 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.
[2]143
[391]144 .. index::
145 single: universal newlines; open() (in module io)
[2]146
[391]147 *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:
150
[2]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
[391]154 ``''``, universal newlines mode is enabled, but line endings are returned to
[2]155 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
[391]165 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).
[2]169
[391]170 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.
[2]180
[391]181 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
[2]185 file opened in a binary mode.
186
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
216 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.
220
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
[391]228 :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.
[2]231
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.
[391]237 Lines are defined slightly differently depending on whether the stream is
238 a binary stream (yielding :class:`bytes`), or a text stream (yielding
239 :class:`unicode` strings). See :meth:`~IOBase.readline` below.
[2]240
241 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::
244
[391]245 with io.open('spam.txt', 'w') as file:
246 file.write(u'Spam and eggs!')
[2]247
248 :class:`IOBase` provides these data attributes and methods:
249
250 .. method:: close()
251
252 Flush and close this stream. This method has no effect if the file is
253 already closed. Once the file is closed, any operation on the file
[391]254 (e.g. reading or writing) will raise a :exc:`ValueError`.
[2]255
[391]256 As a convenience, it is allowed to call this method more than once;
257 only the first call, however, will have an effect.
258
[2]259 .. attribute:: closed
260
261 True if the stream is closed.
262
263 .. method:: fileno()
264
265 Return the underlying file descriptor (an integer) of the stream if it
266 exists. An :exc:`IOError` is raised if the IO object does not use a file
267 descriptor.
268
269 .. method:: flush()
270
271 Flush the write buffers of the stream if applicable. This does nothing
272 for read-only and non-blocking streams.
273
274 .. method:: isatty()
275
276 Return ``True`` if the stream is interactive (i.e., connected to
277 a terminal/tty device).
278
279 .. method:: readable()
280
281 Return ``True`` if the stream can be read from. If False, :meth:`read`
282 will raise :exc:`IOError`.
283
[391]284 .. method:: readline(limit=-1)
[2]285
286 Read and return one line from the stream. If *limit* is specified, at
287 most *limit* bytes will be read.
288
289 The line terminator is always ``b'\n'`` for binary files; for text files,
290 the *newlines* argument to :func:`.open` can be used to select the line
291 terminator(s) recognized.
292
[391]293 .. method:: readlines(hint=-1)
[2]294
295 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*.
298
[391]299 Note that it's already possible to iterate on file objects using ``for
300 line in file: ...`` without calling ``file.readlines()``.
[2]301
[391]302 .. method:: seek(offset, whence=SEEK_SET)
303
[2]304 Change the stream position to the given byte *offset*. *offset* is
305 interpreted relative to the position indicated by *whence*. Values for
306 *whence* are:
307
[391]308 * :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
[2]314
315 Return the new absolute position.
316
[391]317 .. versionadded:: 2.7
318 The ``SEEK_*`` constants
319
[2]320 .. method:: seekable()
321
322 Return ``True`` if the stream supports random access. If ``False``,
323 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`IOError`.
324
325 .. method:: tell()
326
327 Return the current stream position.
328
[391]329 .. method:: truncate(size=None)
[2]330
[391]331 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.
[2]337
338 .. method:: writable()
339
340 Return ``True`` if the stream supports writing. If ``False``,
341 :meth:`write` and :meth:`truncate` will raise :exc:`IOError`.
342
343 .. method:: writelines(lines)
344
345 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.
348
349
350.. class:: RawIOBase
351
352 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no
353 public constructor.
354
[391]355 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
[2]359 In addition to the attributes and methods from :class:`IOBase`,
360 RawIOBase provides the following methods:
361
[391]362 .. method:: read(n=-1)
[2]363
[391]364 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.
[2]368
[391]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.
372
[2]373 .. method:: readall()
374
375 Read and return all the bytes from the stream until EOF, using multiple
376 calls to the stream if necessary.
377
378 .. method:: readinto(b)
379
[391]380 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.
[2]383
384 .. method:: write(b)
385
386 Write the given bytes or bytearray object, *b*, to the underlying raw
[391]387 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.
[2]392
393
394.. class:: BufferedIOBase
395
[391]396 Base class for binary streams that support some kind of buffering.
397 It inherits :class:`IOBase`. There is no public constructor.
[2]398
[391]399 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
[2]410 implementation that defers to :meth:`readinto`.
411
[391]412 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.
[2]415
[391]416 :class:`BufferedIOBase` provides or overrides these methods and attribute in
417 addition to those from :class:`IOBase`:
[2]418
[391]419 .. attribute:: raw
[2]420
[391]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.
[2]424
[391]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)
439
[2]440 Read and return up to *n* bytes. If the argument is omitted, ``None``, or
441 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
[391]450 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
451 non blocking-mode, and has no data available at the moment.
[2]452
[391]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.
459
[2]460 .. method:: readinto(b)
461
462 Read up to len(b) bytes into bytearray *b* and return the number of bytes
463 read.
464
465 Like :meth:`read`, multiple reads may be issued to the underlying raw
[391]466 stream, unless the latter is 'interactive'.
[2]467
[391]468 A :exc:`BlockingIOError` is raised if the underlying raw stream is in
469 non blocking-mode, and has no data available at the moment.
[2]470
471 .. method:: write(b)
472
[391]473 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.
[2]478
[391]479 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.
[2]482
483
484Raw File I/O
485------------
486
[391]487.. class:: FileIO(name, mode='r', closefd=True)
[2]488
[391]489 :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).
[2]492
[391]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.
498
[2]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
[391]504 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
[2]507 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
520
521Buffered Streams
522----------------
523
[391]524Buffered I/O streams provide a higher-level interface to an I/O device
525than raw I/O does.
526
[2]527.. class:: BytesIO([initial_bytes])
528
529 A stream implementation using an in-memory bytes buffer. It inherits
530 :class:`BufferedIOBase`.
531
[391]532 The argument *initial_bytes* is an optional initial :class:`bytes`.
[2]533
534 :class:`BytesIO` provides or overrides these methods in addition to those
535 from :class:`BufferedIOBase` and :class:`IOBase`:
536
537 .. method:: getvalue()
538
539 Return ``bytes`` containing the entire contents of the buffer.
540
541 .. method:: read1()
542
543 In :class:`BytesIO`, this is the same as :meth:`read`.
544
545
[391]546.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)
[2]547
[391]548 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.
[2]553
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
[391]563 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.
[2]566
567 .. method:: read([n])
568
569 Read and return *n* bytes, or if *n* is not given or negative, until EOF
570 or if the read call would block in non-blocking mode.
571
572 .. method:: read1(n)
573
574 Read and return up to *n* bytes with only one call on the raw stream. If
575 at least one byte is buffered, only buffered bytes are returned.
576 Otherwise, one raw stream read call is made.
577
578
[391]579.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)
[2]580
[391]581 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:
[2]586
[391]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.
591
[2]592 The constructor creates a :class:`BufferedWriter` for the given writeable
593 *raw* stream. If the *buffer_size* is not given, it defaults to
[391]594 :data:`DEFAULT_BUFFER_SIZE`.
[2]595
[391]596 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
597
[2]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
604 :exc:`BlockingIOError` should be raised if the raw stream blocks.
605
606 .. method:: write(b)
607
[391]608 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.
[2]611
612
[391]613.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)
[2]614
615 A buffered interface to random access streams. It inherits
[391]616 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports
617 :meth:`seek` and :meth:`tell` functionality.
[2]618
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
[391]621 :data:`DEFAULT_BUFFER_SIZE`.
[2]622
[391]623 A third argument, *max_buffer_size*, is supported, but unused and deprecated.
624
[2]625 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or
626 :class:`BufferedWriter` can do.
627
628
[391]629.. 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
[2]652Text I/O
653--------
654
655.. class:: TextIOBase
656
[391]657 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.
[2]661
662 :class:`TextIOBase` provides or overrides these data attributes and
663 methods in addition to those from :class:`IOBase`:
664
665 .. attribute:: encoding
666
667 The name of the encoding used to decode the stream's bytes into
668 strings, and to encode strings into bytes.
669
[391]670 .. attribute:: errors
671
672 The error setting of the decoder or encoder.
673
[2]674 .. attribute:: newlines
675
676 A string, a tuple of strings, or ``None``, indicating the newlines
[391]677 translated so far. Depending on the implementation and the initial
678 constructor flags, this may not be available.
[2]679
[391]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
699
[2]700 .. method:: read(n)
701
702 Read and return at most *n* characters from the stream as a single
[391]703 :class:`unicode`. If *n* is negative or ``None``, reads until EOF.
[2]704
[391]705 .. method:: readline(limit=-1)
[2]706
[391]707 Read until newline or EOF and return a single ``unicode``. If the
708 stream is already at EOF, an empty string is returned.
[2]709
[391]710 If *limit* is specified, at most *limit* characters will be read.
711
712 .. 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
[2]738 .. method:: write(s)
739
[391]740 Write the :class:`unicode` string *s* to the stream and return the
741 number of characters written.
[2]742
743
[391]744.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False)
[2]745
[391]746 A buffered text stream over a :class:`BufferedIOBase` binary stream.
[2]747 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
752 *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
757 (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.
762
[391]763 .. index::
764 single: universal newlines; io.TextIOWrapper class
[2]765
[391]766 *newline* controls how line endings are handled. It can be ``None``,
767 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
768
769 * On input, if *newline* is ``None``, :term:`universal newlines` mode is
770 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.
776
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.
782
[2]783 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to
784 write contains a newline character.
785
[391]786 :class:`TextIOWrapper` provides one attribute in addition to those of
[2]787 :class:`TextIOBase` and its parents:
788
789 .. attribute:: line_buffering
790
791 Whether line buffering is enabled.
792
793
[391]794.. class:: StringIO(initial_value=u'', newline=None)
[2]795
[391]796 An in-memory stream for unicode text. It inherits :class:`TextIOWrapper`.
[2]797
[391]798 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
800 that of :class:`TextIOWrapper`. The default is to do no newline
801 translation.
[2]802
803 :class:`StringIO` provides this method in addition to those from
804 :class:`TextIOWrapper` and its parents:
805
806 .. method:: getvalue()
807
[391]808 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.
[2]811
[391]812 Example usage::
[2]813
[391]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()
827
828
829.. index::
830 single: universal newlines; io.IncrementalNewlineDecoder class
831
[2]832.. class:: IncrementalNewlineDecoder
833
[391]834 A helper codec that decodes newlines for :term:`universal newlines` mode.
835 It inherits :class:`codecs.IncrementalDecoder`.
[2]836
[391]837
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).
867Also, :meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both
868quite slow due to the reconstruction algorithm used.
869
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
Note: See TracBrowser for help on using the repository browser.