1:mod:`io` --- Core tools for working with streams 2================================================= 3 4.. module:: io 5 :synopsis: Core tools for working with streams. 6 7.. moduleauthor:: Guido van Rossum <guido@python.org> 8.. moduleauthor:: Mike Verdone <mike.verdone@gmail.com> 9.. moduleauthor:: Mark Russell <mark.russell@zen.co.uk> 10.. moduleauthor:: Antoine Pitrou <solipsis@pitrou.net> 11.. moduleauthor:: Amaury Forgeot d'Arc <amauryfa@gmail.com> 12.. moduleauthor:: Benjamin Peterson <benjamin@python.org> 13.. sectionauthor:: Benjamin Peterson <benjamin@python.org> 14 15**Source code:** :source:`Lib/io.py` 16 17-------------- 18 19.. _io-overview: 20 21Overview 22-------- 23 24.. index:: 25 single: file object; io module 26 27The :mod:`io` module provides Python's main facilities for dealing with various 28types of I/O. There are three main types of I/O: *text I/O*, *binary I/O* 29and *raw I/O*. These are generic categories, and various backing stores can 30be used for each of them. A concrete object belonging to any of these 31categories is called a :term:`file object`. Other common terms are *stream* 32and *file-like object*. 33 34Independent of its category, each concrete stream object will also have 35various capabilities: it can be read-only, write-only, or read-write. It can 36also allow arbitrary random access (seeking forwards or backwards to any 37location), or only sequential access (for example in the case of a socket or 38pipe). 39 40All streams are careful about the type of data you give to them. For example 41giving a :class:`str` object to the ``write()`` method of a binary stream 42will raise a :exc:`TypeError`. So will giving a :class:`bytes` object to the 43``write()`` method of a text stream. 44 45.. versionchanged:: 3.3 46 Operations that used to raise :exc:`IOError` now raise :exc:`OSError`, since 47 :exc:`IOError` is now an alias of :exc:`OSError`. 48 49 50Text I/O 51^^^^^^^^ 52 53Text I/O expects and produces :class:`str` objects. This means that whenever 54the backing store is natively made of bytes (such as in the case of a file), 55encoding and decoding of data is made transparently as well as optional 56translation of platform-specific newline characters. 57 58The easiest way to create a text stream is with :meth:`open()`, optionally 59specifying an encoding:: 60 61 f = open("myfile.txt", "r", encoding="utf-8") 62 63In-memory text streams are also available as :class:`StringIO` objects:: 64 65 f = io.StringIO("some initial text data") 66 67The text stream API is described in detail in the documentation of 68:class:`TextIOBase`. 69 70 71Binary I/O 72^^^^^^^^^^ 73 74Binary I/O (also called *buffered I/O*) expects 75:term:`bytes-like objects <bytes-like object>` and produces :class:`bytes` 76objects. No encoding, decoding, or newline translation is performed. This 77category of streams can be used for all kinds of non-text data, and also when 78manual control over the handling of text data is desired. 79 80The easiest way to create a binary stream is with :meth:`open()` with ``'b'`` in 81the mode string:: 82 83 f = open("myfile.jpg", "rb") 84 85In-memory binary streams are also available as :class:`BytesIO` objects:: 86 87 f = io.BytesIO(b"some initial binary data: \x00\x01") 88 89The binary stream API is described in detail in the docs of 90:class:`BufferedIOBase`. 91 92Other library modules may provide additional ways to create text or binary 93streams. See :meth:`socket.socket.makefile` for example. 94 95 96Raw I/O 97^^^^^^^ 98 99Raw I/O (also called *unbuffered I/O*) is generally used as a low-level 100building-block for binary and text streams; it is rarely useful to directly 101manipulate a raw stream from user code. Nevertheless, you can create a raw 102stream by opening a file in binary mode with buffering disabled:: 103 104 f = open("myfile.jpg", "rb", buffering=0) 105 106The raw stream API is described in detail in the docs of :class:`RawIOBase`. 107 108 109High-level Module Interface 110--------------------------- 111 112.. data:: DEFAULT_BUFFER_SIZE 113 114 An int containing the default buffer size used by the module's buffered I/O 115 classes. :func:`open` uses the file's blksize (as obtained by 116 :func:`os.stat`) if possible. 117 118 119.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 120 121 This is an alias for the builtin :func:`open` function. 122 123 124.. exception:: BlockingIOError 125 126 This is a compatibility alias for the builtin :exc:`BlockingIOError` 127 exception. 128 129 130.. exception:: UnsupportedOperation 131 132 An exception inheriting :exc:`OSError` and :exc:`ValueError` that is raised 133 when an unsupported operation is called on a stream. 134 135 136In-memory streams 137^^^^^^^^^^^^^^^^^ 138 139It is also possible to use a :class:`str` or :term:`bytes-like object` as a 140file for both reading and writing. For strings :class:`StringIO` can be used 141like a file opened in text mode. :class:`BytesIO` can be used like a file 142opened in binary mode. Both provide full read-write capabilities with random 143access. 144 145 146.. seealso:: 147 148 :mod:`sys` 149 contains the standard IO streams: :data:`sys.stdin`, :data:`sys.stdout`, 150 and :data:`sys.stderr`. 151 152 153Class hierarchy 154--------------- 155 156The implementation of I/O streams is organized as a hierarchy of classes. First 157:term:`abstract base classes <abstract base class>` (ABCs), which are used to 158specify the various categories of streams, then concrete classes providing the 159standard stream implementations. 160 161 .. note:: 162 163 The abstract base classes also provide default implementations of some 164 methods in order to help implementation of concrete stream classes. For 165 example, :class:`BufferedIOBase` provides unoptimized implementations of 166 :meth:`~IOBase.readinto` and :meth:`~IOBase.readline`. 167 168At the top of the I/O hierarchy is the abstract base class :class:`IOBase`. It 169defines the basic interface to a stream. Note, however, that there is no 170separation between reading and writing to streams; implementations are allowed 171to raise :exc:`UnsupportedOperation` if they do not support a given operation. 172 173The :class:`RawIOBase` ABC extends :class:`IOBase`. It deals with the reading 174and writing of bytes to a stream. :class:`FileIO` subclasses :class:`RawIOBase` 175to provide an interface to files in the machine's file system. 176 177The :class:`BufferedIOBase` ABC deals with buffering on a raw byte stream 178(:class:`RawIOBase`). Its subclasses, :class:`BufferedWriter`, 179:class:`BufferedReader`, and :class:`BufferedRWPair` buffer streams that are 180readable, writable, and both readable and writable. :class:`BufferedRandom` 181provides a buffered interface to random access streams. Another 182:class:`BufferedIOBase` subclass, :class:`BytesIO`, is a stream of in-memory 183bytes. 184 185The :class:`TextIOBase` ABC, another subclass of :class:`IOBase`, deals with 186streams whose bytes represent text, and handles encoding and decoding to and 187from strings. :class:`TextIOWrapper`, which extends it, is a buffered text 188interface to a buffered raw stream (:class:`BufferedIOBase`). Finally, 189:class:`StringIO` is an in-memory stream for text. 190 191Argument names are not part of the specification, and only the arguments of 192:func:`open` are intended to be used as keyword arguments. 193 194The following table summarizes the ABCs provided by the :mod:`io` module: 195 196.. tabularcolumns:: |l|l|L|L| 197 198========================= ================== ======================== ================================================== 199ABC Inherits Stub Methods Mixin Methods and Properties 200========================= ================== ======================== ================================================== 201:class:`IOBase` ``fileno``, ``seek``, ``close``, ``closed``, ``__enter__``, 202 and ``truncate`` ``__exit__``, ``flush``, ``isatty``, ``__iter__``, 203 ``__next__``, ``readable``, ``readline``, 204 ``readlines``, ``seekable``, ``tell``, 205 ``writable``, and ``writelines`` 206:class:`RawIOBase` :class:`IOBase` ``readinto`` and Inherited :class:`IOBase` methods, ``read``, 207 ``write`` and ``readall`` 208:class:`BufferedIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``readinto``, 209 ``read1``, and ``write`` and ``readinto1`` 210:class:`TextIOBase` :class:`IOBase` ``detach``, ``read``, Inherited :class:`IOBase` methods, ``encoding``, 211 ``readline``, and ``errors``, and ``newlines`` 212 ``write`` 213========================= ================== ======================== ================================================== 214 215 216I/O Base Classes 217^^^^^^^^^^^^^^^^ 218 219.. class:: IOBase 220 221 The abstract base class for all I/O classes, acting on streams of bytes. 222 There is no public constructor. 223 224 This class provides empty abstract implementations for many methods 225 that derived classes can override selectively; the default 226 implementations represent a file that cannot be read, written or 227 seeked. 228 229 Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`, 230 or :meth:`write` because their signatures will vary, implementations and 231 clients should consider those methods part of the interface. Also, 232 implementations may raise a :exc:`ValueError` (or :exc:`UnsupportedOperation`) 233 when operations they do not support are called. 234 235 The basic type used for binary data read from or written to a file is 236 :class:`bytes`. Other :term:`bytes-like objects <bytes-like object>` are 237 accepted as method arguments too. In some cases, such as 238 :meth:`~RawIOBase.readinto`, a writable object such as :class:`bytearray` 239 is required. Text I/O classes work with :class:`str` data. 240 241 Note that calling any method (even inquiries) on a closed stream is 242 undefined. Implementations may raise :exc:`ValueError` in this case. 243 244 :class:`IOBase` (and its subclasses) supports the iterator protocol, meaning 245 that an :class:`IOBase` object can be iterated over yielding the lines in a 246 stream. Lines are defined slightly differently depending on whether the 247 stream is a binary stream (yielding bytes), or a text stream (yielding 248 character strings). See :meth:`~IOBase.readline` below. 249 250 :class:`IOBase` is also a context manager and therefore supports the 251 :keyword:`with` statement. In this example, *file* is closed after the 252 :keyword:`!with` statement's suite is finished---even if an exception occurs:: 253 254 with open('spam.txt', 'w') as file: 255 file.write('Spam and eggs!') 256 257 :class:`IOBase` provides these data attributes and methods: 258 259 .. method:: close() 260 261 Flush and close this stream. This method has no effect if the file is 262 already closed. Once the file is closed, any operation on the file 263 (e.g. reading or writing) will raise a :exc:`ValueError`. 264 265 As a convenience, it is allowed to call this method more than once; 266 only the first call, however, will have an effect. 267 268 .. attribute:: closed 269 270 ``True`` if the stream is closed. 271 272 .. method:: fileno() 273 274 Return the underlying file descriptor (an integer) of the stream if it 275 exists. An :exc:`OSError` is raised if the IO object does not use a file 276 descriptor. 277 278 .. method:: flush() 279 280 Flush the write buffers of the stream if applicable. This does nothing 281 for read-only and non-blocking streams. 282 283 .. method:: isatty() 284 285 Return ``True`` if the stream is interactive (i.e., connected to 286 a terminal/tty device). 287 288 .. method:: readable() 289 290 Return ``True`` if the stream can be read from. If ``False``, :meth:`read` 291 will raise :exc:`OSError`. 292 293 .. method:: readline(size=-1) 294 295 Read and return one line from the stream. If *size* is specified, at 296 most *size* bytes will be read. 297 298 The line terminator is always ``b'\n'`` for binary files; for text files, 299 the *newline* argument to :func:`open` can be used to select the line 300 terminator(s) recognized. 301 302 .. method:: readlines(hint=-1) 303 304 Read and return a list of lines from the stream. *hint* can be specified 305 to control the number of lines read: no more lines will be read if the 306 total size (in bytes/characters) of all lines so far exceeds *hint*. 307 308 Note that it's already possible to iterate on file objects using ``for 309 line in file: ...`` without calling ``file.readlines()``. 310 311 .. method:: seek(offset[, whence]) 312 313 Change the stream position to the given byte *offset*. *offset* is 314 interpreted relative to the position indicated by *whence*. The default 315 value for *whence* is :data:`SEEK_SET`. Values for *whence* are: 316 317 * :data:`SEEK_SET` or ``0`` -- start of the stream (the default); 318 *offset* should be zero or positive 319 * :data:`SEEK_CUR` or ``1`` -- current stream position; *offset* may 320 be negative 321 * :data:`SEEK_END` or ``2`` -- end of the stream; *offset* is usually 322 negative 323 324 Return the new absolute position. 325 326 .. versionadded:: 3.1 327 The ``SEEK_*`` constants. 328 329 .. versionadded:: 3.3 330 Some operating systems could support additional values, like 331 :data:`os.SEEK_HOLE` or :data:`os.SEEK_DATA`. The valid values 332 for a file could depend on it being open in text or binary mode. 333 334 .. method:: seekable() 335 336 Return ``True`` if the stream supports random access. If ``False``, 337 :meth:`seek`, :meth:`tell` and :meth:`truncate` will raise :exc:`OSError`. 338 339 .. method:: tell() 340 341 Return the current stream position. 342 343 .. method:: truncate(size=None) 344 345 Resize the stream to the given *size* in bytes (or the current position 346 if *size* is not specified). The current stream position isn't changed. 347 This resizing can extend or reduce the current file size. In case of 348 extension, the contents of the new file area depend on the platform 349 (on most systems, additional bytes are zero-filled). The new file size 350 is returned. 351 352 .. versionchanged:: 3.5 353 Windows will now zero-fill files when extending. 354 355 .. method:: writable() 356 357 Return ``True`` if the stream supports writing. If ``False``, 358 :meth:`write` and :meth:`truncate` will raise :exc:`OSError`. 359 360 .. method:: writelines(lines) 361 362 Write a list of lines to the stream. Line separators are not added, so it 363 is usual for each of the lines provided to have a line separator at the 364 end. 365 366 .. method:: __del__() 367 368 Prepare for object destruction. :class:`IOBase` provides a default 369 implementation of this method that calls the instance's 370 :meth:`~IOBase.close` method. 371 372 373.. class:: RawIOBase 374 375 Base class for raw binary I/O. It inherits :class:`IOBase`. There is no 376 public constructor. 377 378 Raw binary I/O typically provides low-level access to an underlying OS 379 device or API, and does not try to encapsulate it in high-level primitives 380 (this is left to Buffered I/O and Text I/O, described later in this page). 381 382 In addition to the attributes and methods from :class:`IOBase`, 383 :class:`RawIOBase` provides the following methods: 384 385 .. method:: read(size=-1) 386 387 Read up to *size* bytes from the object and return them. As a convenience, 388 if *size* is unspecified or -1, all bytes until EOF are returned. 389 Otherwise, only one system call is ever made. Fewer than *size* bytes may 390 be returned if the operating system call returns fewer than *size* bytes. 391 392 If 0 bytes are returned, and *size* was not 0, this indicates end of file. 393 If the object is in non-blocking mode and no bytes are available, 394 ``None`` is returned. 395 396 The default implementation defers to :meth:`readall` and 397 :meth:`readinto`. 398 399 .. method:: readall() 400 401 Read and return all the bytes from the stream until EOF, using multiple 402 calls to the stream if necessary. 403 404 .. method:: readinto(b) 405 406 Read bytes into a pre-allocated, writable 407 :term:`bytes-like object` *b*, and return the 408 number of bytes read. If the object is in non-blocking mode and no bytes 409 are available, ``None`` is returned. 410 411 .. method:: write(b) 412 413 Write the given :term:`bytes-like object`, *b*, to the 414 underlying raw stream, and return the number of 415 bytes written. This can be less than the length of *b* in 416 bytes, depending on specifics of the underlying raw 417 stream, and especially if it is in non-blocking mode. ``None`` is 418 returned if the raw stream is set not to block and no single byte could 419 be readily written to it. The caller may release or mutate *b* after 420 this method returns, so the implementation should only access *b* 421 during the method call. 422 423 424.. class:: BufferedIOBase 425 426 Base class for binary streams that support some kind of buffering. 427 It inherits :class:`IOBase`. There is no public constructor. 428 429 The main difference with :class:`RawIOBase` is that methods :meth:`read`, 430 :meth:`readinto` and :meth:`write` will try (respectively) to read as much 431 input as requested or to consume all given output, at the expense of 432 making perhaps more than one system call. 433 434 In addition, those methods can raise :exc:`BlockingIOError` if the 435 underlying raw stream is in non-blocking mode and cannot take or give 436 enough data; unlike their :class:`RawIOBase` counterparts, they will 437 never return ``None``. 438 439 Besides, the :meth:`read` method does not have a default 440 implementation that defers to :meth:`readinto`. 441 442 A typical :class:`BufferedIOBase` implementation should not inherit from a 443 :class:`RawIOBase` implementation, but wrap one, like 444 :class:`BufferedWriter` and :class:`BufferedReader` do. 445 446 :class:`BufferedIOBase` provides or overrides these methods and attribute in 447 addition to those from :class:`IOBase`: 448 449 .. attribute:: raw 450 451 The underlying raw stream (a :class:`RawIOBase` instance) that 452 :class:`BufferedIOBase` deals with. This is not part of the 453 :class:`BufferedIOBase` API and may not exist on some implementations. 454 455 .. method:: detach() 456 457 Separate the underlying raw stream from the buffer and return it. 458 459 After the raw stream has been detached, the buffer is in an unusable 460 state. 461 462 Some buffers, like :class:`BytesIO`, do not have the concept of a single 463 raw stream to return from this method. They raise 464 :exc:`UnsupportedOperation`. 465 466 .. versionadded:: 3.1 467 468 .. method:: read(size=-1) 469 470 Read and return up to *size* bytes. If the argument is omitted, ``None``, 471 or negative, data is read and returned until EOF is reached. An empty 472 :class:`bytes` object is returned if the stream is already at EOF. 473 474 If the argument is positive, and the underlying raw stream is not 475 interactive, multiple raw reads may be issued to satisfy the byte count 476 (unless EOF is reached first). But for interactive raw streams, at most 477 one raw read will be issued, and a short result does not imply that EOF is 478 imminent. 479 480 A :exc:`BlockingIOError` is raised if the underlying raw stream is in 481 non blocking-mode, and has no data available at the moment. 482 483 .. method:: read1([size]) 484 485 Read and return up to *size* bytes, with at most one call to the 486 underlying raw stream's :meth:`~RawIOBase.read` (or 487 :meth:`~RawIOBase.readinto`) method. This can be useful if you are 488 implementing your own buffering on top of a :class:`BufferedIOBase` 489 object. 490 491 If *size* is ``-1`` (the default), an arbitrary number of bytes are 492 returned (more than zero unless EOF is reached). 493 494 .. method:: readinto(b) 495 496 Read bytes into a pre-allocated, writable 497 :term:`bytes-like object` *b* and return the number of bytes read. 498 499 Like :meth:`read`, multiple reads may be issued to the underlying raw 500 stream, unless the latter is interactive. 501 502 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non 503 blocking-mode, and has no data available at the moment. 504 505 .. method:: readinto1(b) 506 507 Read bytes into a pre-allocated, writable 508 :term:`bytes-like object` *b*, using at most one call to 509 the underlying raw stream's :meth:`~RawIOBase.read` (or 510 :meth:`~RawIOBase.readinto`) method. Return the number of bytes read. 511 512 A :exc:`BlockingIOError` is raised if the underlying raw stream is in non 513 blocking-mode, and has no data available at the moment. 514 515 .. versionadded:: 3.5 516 517 .. method:: write(b) 518 519 Write the given :term:`bytes-like object`, *b*, and return the number 520 of bytes written (always equal to the length of *b* in bytes, since if 521 the write fails an :exc:`OSError` will be raised). Depending on the 522 actual implementation, these bytes may be readily written to the 523 underlying stream, or held in a buffer for performance and latency 524 reasons. 525 526 When in non-blocking mode, a :exc:`BlockingIOError` is raised if the 527 data needed to be written to the raw stream but it couldn't accept 528 all the data without blocking. 529 530 The caller may release or mutate *b* after this method returns, 531 so the implementation should only access *b* during the method call. 532 533 534Raw File I/O 535^^^^^^^^^^^^ 536 537.. class:: FileIO(name, mode='r', closefd=True, opener=None) 538 539 :class:`FileIO` represents an OS-level file containing bytes data. 540 It implements the :class:`RawIOBase` interface (and therefore the 541 :class:`IOBase` interface, too). 542 543 The *name* can be one of two things: 544 545 * a character string or :class:`bytes` object representing the path to the 546 file which will be opened. In this case closefd must be ``True`` (the default) 547 otherwise an error will be raised. 548 * an integer representing the number of an existing OS-level file descriptor 549 to which the resulting :class:`FileIO` object will give access. When the 550 FileIO object is closed this fd will be closed as well, unless *closefd* 551 is set to ``False``. 552 553 The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading 554 (default), writing, exclusive creation or appending. The file will be 555 created if it doesn't exist when opened for writing or appending; it will be 556 truncated when opened for writing. :exc:`FileExistsError` will be raised if 557 it already exists when opened for creating. Opening a file for creating 558 implies writing, so this mode behaves in a similar way to ``'w'``. Add a 559 ``'+'`` to the mode to allow simultaneous reading and writing. 560 561 The :meth:`read` (when called with a positive argument), :meth:`readinto` 562 and :meth:`write` methods on this class will only make one system call. 563 564 A custom opener can be used by passing a callable as *opener*. The underlying 565 file descriptor for the file object is then obtained by calling *opener* with 566 (*name*, *flags*). *opener* must return an open file descriptor (passing 567 :mod:`os.open` as *opener* results in functionality similar to passing 568 ``None``). 569 570 The newly created file is :ref:`non-inheritable <fd_inheritance>`. 571 572 See the :func:`open` built-in function for examples on using the *opener* 573 parameter. 574 575 .. versionchanged:: 3.3 576 The *opener* parameter was added. 577 The ``'x'`` mode was added. 578 579 .. versionchanged:: 3.4 580 The file is now non-inheritable. 581 582 In addition to the attributes and methods from :class:`IOBase` and 583 :class:`RawIOBase`, :class:`FileIO` provides the following data 584 attributes: 585 586 .. attribute:: mode 587 588 The mode as given in the constructor. 589 590 .. attribute:: name 591 592 The file name. This is the file descriptor of the file when no name is 593 given in the constructor. 594 595 596Buffered Streams 597^^^^^^^^^^^^^^^^ 598 599Buffered I/O streams provide a higher-level interface to an I/O device 600than raw I/O does. 601 602.. class:: BytesIO([initial_bytes]) 603 604 A stream implementation using an in-memory bytes buffer. It inherits 605 :class:`BufferedIOBase`. The buffer is discarded when the 606 :meth:`~IOBase.close` method is called. 607 608 The optional argument *initial_bytes* is a :term:`bytes-like object` that 609 contains initial data. 610 611 :class:`BytesIO` provides or overrides these methods in addition to those 612 from :class:`BufferedIOBase` and :class:`IOBase`: 613 614 .. method:: getbuffer() 615 616 Return a readable and writable view over the contents of the buffer 617 without copying them. Also, mutating the view will transparently 618 update the contents of the buffer:: 619 620 >>> b = io.BytesIO(b"abcdef") 621 >>> view = b.getbuffer() 622 >>> view[2:4] = b"56" 623 >>> b.getvalue() 624 b'ab56ef' 625 626 .. note:: 627 As long as the view exists, the :class:`BytesIO` object cannot be 628 resized or closed. 629 630 .. versionadded:: 3.2 631 632 .. method:: getvalue() 633 634 Return :class:`bytes` containing the entire contents of the buffer. 635 636 637 .. method:: read1([size]) 638 639 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`. 640 641 .. versionchanged:: 3.7 642 The *size* argument is now optional. 643 644 .. method:: readinto1(b) 645 646 In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`. 647 648 .. versionadded:: 3.5 649 650.. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE) 651 652 A buffer providing higher-level access to a readable, sequential 653 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`. 654 When reading data from this object, a larger amount of data may be 655 requested from the underlying raw stream, and kept in an internal buffer. 656 The buffered data can then be returned directly on subsequent reads. 657 658 The constructor creates a :class:`BufferedReader` for the given readable 659 *raw* stream and *buffer_size*. If *buffer_size* is omitted, 660 :data:`DEFAULT_BUFFER_SIZE` is used. 661 662 :class:`BufferedReader` provides or overrides these methods in addition to 663 those from :class:`BufferedIOBase` and :class:`IOBase`: 664 665 .. method:: peek([size]) 666 667 Return bytes from the stream without advancing the position. At most one 668 single read on the raw stream is done to satisfy the call. The number of 669 bytes returned may be less or more than requested. 670 671 .. method:: read([size]) 672 673 Read and return *size* bytes, or if *size* is not given or negative, until 674 EOF or if the read call would block in non-blocking mode. 675 676 .. method:: read1([size]) 677 678 Read and return up to *size* bytes with only one call on the raw stream. 679 If at least one byte is buffered, only buffered bytes are returned. 680 Otherwise, one raw stream read call is made. 681 682 .. versionchanged:: 3.7 683 The *size* argument is now optional. 684 685 686.. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE) 687 688 A buffer providing higher-level access to a writeable, sequential 689 :class:`RawIOBase` object. It inherits :class:`BufferedIOBase`. 690 When writing to this object, data is normally placed into an internal 691 buffer. The buffer will be written out to the underlying :class:`RawIOBase` 692 object under various conditions, including: 693 694 * when the buffer gets too small for all pending data; 695 * when :meth:`flush()` is called; 696 * when a :meth:`seek()` is requested (for :class:`BufferedRandom` objects); 697 * when the :class:`BufferedWriter` object is closed or destroyed. 698 699 The constructor creates a :class:`BufferedWriter` for the given writeable 700 *raw* stream. If the *buffer_size* is not given, it defaults to 701 :data:`DEFAULT_BUFFER_SIZE`. 702 703 :class:`BufferedWriter` provides or overrides these methods in addition to 704 those from :class:`BufferedIOBase` and :class:`IOBase`: 705 706 .. method:: flush() 707 708 Force bytes held in the buffer into the raw stream. A 709 :exc:`BlockingIOError` should be raised if the raw stream blocks. 710 711 .. method:: write(b) 712 713 Write the :term:`bytes-like object`, *b*, and return the 714 number of bytes written. When in non-blocking mode, a 715 :exc:`BlockingIOError` is raised if the buffer needs to be written out but 716 the raw stream blocks. 717 718 719.. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE) 720 721 A buffered interface to random access streams. It inherits 722 :class:`BufferedReader` and :class:`BufferedWriter`, and further supports 723 :meth:`seek` and :meth:`tell` functionality. 724 725 The constructor creates a reader and writer for a seekable raw stream, given 726 in the first argument. If the *buffer_size* is omitted it defaults to 727 :data:`DEFAULT_BUFFER_SIZE`. 728 729 :class:`BufferedRandom` is capable of anything :class:`BufferedReader` or 730 :class:`BufferedWriter` can do. 731 732 733.. class:: BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE) 734 735 A buffered I/O object combining two unidirectional :class:`RawIOBase` 736 objects -- one readable, the other writeable -- into a single bidirectional 737 endpoint. It inherits :class:`BufferedIOBase`. 738 739 *reader* and *writer* are :class:`RawIOBase` objects that are readable and 740 writeable respectively. If the *buffer_size* is omitted it defaults to 741 :data:`DEFAULT_BUFFER_SIZE`. 742 743 :class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\'s methods 744 except for :meth:`~BufferedIOBase.detach`, which raises 745 :exc:`UnsupportedOperation`. 746 747 .. warning:: 748 749 :class:`BufferedRWPair` does not attempt to synchronize accesses to 750 its underlying raw streams. You should not pass it the same object 751 as reader and writer; use :class:`BufferedRandom` instead. 752 753 754Text I/O 755^^^^^^^^ 756 757.. class:: TextIOBase 758 759 Base class for text streams. This class provides a character and line based 760 interface to stream I/O. There is no :meth:`readinto` method because 761 Python's character strings are immutable. It inherits :class:`IOBase`. 762 There is no public constructor. 763 764 :class:`TextIOBase` provides or overrides these data attributes and 765 methods in addition to those from :class:`IOBase`: 766 767 .. attribute:: encoding 768 769 The name of the encoding used to decode the stream's bytes into 770 strings, and to encode strings into bytes. 771 772 .. attribute:: errors 773 774 The error setting of the decoder or encoder. 775 776 .. attribute:: newlines 777 778 A string, a tuple of strings, or ``None``, indicating the newlines 779 translated so far. Depending on the implementation and the initial 780 constructor flags, this may not be available. 781 782 .. attribute:: buffer 783 784 The underlying binary buffer (a :class:`BufferedIOBase` instance) that 785 :class:`TextIOBase` deals with. This is not part of the 786 :class:`TextIOBase` API and may not exist in some implementations. 787 788 .. method:: detach() 789 790 Separate the underlying binary buffer from the :class:`TextIOBase` and 791 return it. 792 793 After the underlying buffer has been detached, the :class:`TextIOBase` is 794 in an unusable state. 795 796 Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not 797 have the concept of an underlying buffer and calling this method will 798 raise :exc:`UnsupportedOperation`. 799 800 .. versionadded:: 3.1 801 802 .. method:: read(size=-1) 803 804 Read and return at most *size* characters from the stream as a single 805 :class:`str`. If *size* is negative or ``None``, reads until EOF. 806 807 .. method:: readline(size=-1) 808 809 Read until newline or EOF and return a single ``str``. If the stream is 810 already at EOF, an empty string is returned. 811 812 If *size* is specified, at most *size* characters will be read. 813 814 .. method:: seek(offset[, whence]) 815 816 Change the stream position to the given *offset*. Behaviour depends on 817 the *whence* parameter. The default value for *whence* is 818 :data:`SEEK_SET`. 819 820 * :data:`SEEK_SET` or ``0``: seek from the start of the stream 821 (the default); *offset* must either be a number returned by 822 :meth:`TextIOBase.tell`, or zero. Any other *offset* value 823 produces undefined behaviour. 824 * :data:`SEEK_CUR` or ``1``: "seek" to the current position; 825 *offset* must be zero, which is a no-operation (all other values 826 are unsupported). 827 * :data:`SEEK_END` or ``2``: seek to the end of the stream; 828 *offset* must be zero (all other values are unsupported). 829 830 Return the new absolute position as an opaque number. 831 832 .. versionadded:: 3.1 833 The ``SEEK_*`` constants. 834 835 .. method:: tell() 836 837 Return the current stream position as an opaque number. The number 838 does not usually represent a number of bytes in the underlying 839 binary storage. 840 841 .. method:: write(s) 842 843 Write the string *s* to the stream and return the number of characters 844 written. 845 846 847.. class:: TextIOWrapper(buffer, encoding=None, errors=None, newline=None, \ 848 line_buffering=False, write_through=False) 849 850 A buffered text stream over a :class:`BufferedIOBase` binary stream. 851 It inherits :class:`TextIOBase`. 852 853 *encoding* gives the name of the encoding that the stream will be decoded or 854 encoded with. It defaults to 855 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`. 856 857 *errors* is an optional string that specifies how encoding and decoding 858 errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError` 859 exception if there is an encoding error (the default of ``None`` has the same 860 effect), or pass ``'ignore'`` to ignore errors. (Note that ignoring encoding 861 errors can lead to data loss.) ``'replace'`` causes a replacement marker 862 (such as ``'?'``) to be inserted where there is malformed data. 863 ``'backslashreplace'`` causes malformed data to be replaced by a 864 backslashed escape sequence. When writing, ``'xmlcharrefreplace'`` 865 (replace with the appropriate XML character reference) or ``'namereplace'`` 866 (replace with ``\N{...}`` escape sequences) can be used. Any other error 867 handling name that has been registered with 868 :func:`codecs.register_error` is also valid. 869 870 .. index:: 871 single: universal newlines; io.TextIOWrapper class 872 873 *newline* controls how line endings are handled. It can be ``None``, 874 ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows: 875 876 * When reading input from the stream, if *newline* is ``None``, 877 :term:`universal newlines` mode is enabled. Lines in the input can end in 878 ``'\n'``, ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'`` 879 before being returned to the caller. If it is ``''``, universal newlines 880 mode is enabled, but line endings are returned to the caller untranslated. 881 If it has any of the other legal values, input lines are only terminated 882 by the given string, and the line ending is returned to the caller 883 untranslated. 884 885 * When writing output to the stream, if *newline* is ``None``, any ``'\n'`` 886 characters written are translated to the system default line separator, 887 :data:`os.linesep`. If *newline* is ``''`` or ``'\n'``, no translation 888 takes place. If *newline* is any of the other legal values, any ``'\n'`` 889 characters written are translated to the given string. 890 891 If *line_buffering* is ``True``, :meth:`flush` is implied when a call to 892 write contains a newline character or a carriage return. 893 894 If *write_through* is ``True``, calls to :meth:`write` are guaranteed 895 not to be buffered: any data written on the :class:`TextIOWrapper` 896 object is immediately handled to its underlying binary *buffer*. 897 898 .. versionchanged:: 3.3 899 The *write_through* argument has been added. 900 901 .. versionchanged:: 3.3 902 The default *encoding* is now ``locale.getpreferredencoding(False)`` 903 instead of ``locale.getpreferredencoding()``. Don't change temporary the 904 locale encoding using :func:`locale.setlocale`, use the current locale 905 encoding instead of the user preferred encoding. 906 907 :class:`TextIOWrapper` provides these members in addition to those of 908 :class:`TextIOBase` and its parents: 909 910 .. attribute:: line_buffering 911 912 Whether line buffering is enabled. 913 914 .. attribute:: write_through 915 916 Whether writes are passed immediately to the underlying binary 917 buffer. 918 919 .. versionadded:: 3.7 920 921 .. method:: reconfigure(*[, encoding][, errors][, newline][, \ 922 line_buffering][, write_through]) 923 924 Reconfigure this text stream using new settings for *encoding*, 925 *errors*, *newline*, *line_buffering* and *write_through*. 926 927 Parameters not specified keep current settings, except 928 ``errors='strict`` is used when *encoding* is specified but 929 *errors* is not specified. 930 931 It is not possible to change the encoding or newline if some data 932 has already been read from the stream. On the other hand, changing 933 encoding after write is possible. 934 935 This method does an implicit stream flush before setting the 936 new parameters. 937 938 .. versionadded:: 3.7 939 940 941.. class:: StringIO(initial_value='', newline='\\n') 942 943 An in-memory stream for text I/O. The text buffer is discarded when the 944 :meth:`~IOBase.close` method is called. 945 946 The initial value of the buffer can be set by providing *initial_value*. 947 If newline translation is enabled, newlines will be encoded as if by 948 :meth:`~TextIOBase.write`. The stream is positioned at the start of 949 the buffer. 950 951 The *newline* argument works like that of :class:`TextIOWrapper`. 952 The default is to consider only ``\n`` characters as ends of lines and 953 to do no newline translation. If *newline* is set to ``None``, 954 newlines are written as ``\n`` on all platforms, but universal 955 newline decoding is still performed when reading. 956 957 :class:`StringIO` provides this method in addition to those from 958 :class:`TextIOBase` and its parents: 959 960 .. method:: getvalue() 961 962 Return a ``str`` containing the entire contents of the buffer. 963 Newlines are decoded as if by :meth:`~TextIOBase.read`, although 964 the stream position is not changed. 965 966 Example usage:: 967 968 import io 969 970 output = io.StringIO() 971 output.write('First line.\n') 972 print('Second line.', file=output) 973 974 # Retrieve file contents -- this will be 975 # 'First line.\nSecond line.\n' 976 contents = output.getvalue() 977 978 # Close object and discard memory buffer -- 979 # .getvalue() will now raise an exception. 980 output.close() 981 982 983.. index:: 984 single: universal newlines; io.IncrementalNewlineDecoder class 985 986.. class:: IncrementalNewlineDecoder 987 988 A helper codec that decodes newlines for :term:`universal newlines` mode. 989 It inherits :class:`codecs.IncrementalDecoder`. 990 991 992Performance 993----------- 994 995This section discusses the performance of the provided concrete I/O 996implementations. 997 998Binary I/O 999^^^^^^^^^^ 1000 1001By reading and writing only large chunks of data even when the user asks for a 1002single byte, buffered I/O hides any inefficiency in calling and executing the 1003operating system's unbuffered I/O routines. The gain depends on the OS and the 1004kind of I/O which is performed. For example, on some modern OSes such as Linux, 1005unbuffered disk I/O can be as fast as buffered I/O. The bottom line, however, 1006is that buffered I/O offers predictable performance regardless of the platform 1007and the backing device. Therefore, it is almost always preferable to use 1008buffered I/O rather than unbuffered I/O for binary data. 1009 1010Text I/O 1011^^^^^^^^ 1012 1013Text I/O over a binary storage (such as a file) is significantly slower than 1014binary I/O over the same storage, because it requires conversions between 1015unicode and binary data using a character codec. This can become noticeable 1016handling huge amounts of text data like large log files. Also, 1017:meth:`TextIOWrapper.tell` and :meth:`TextIOWrapper.seek` are both quite slow 1018due to the reconstruction algorithm used. 1019 1020:class:`StringIO`, however, is a native in-memory unicode container and will 1021exhibit similar speed to :class:`BytesIO`. 1022 1023Multi-threading 1024^^^^^^^^^^^^^^^ 1025 1026:class:`FileIO` objects are thread-safe to the extent that the operating system 1027calls (such as ``read(2)`` under Unix) they wrap are thread-safe too. 1028 1029Binary buffered objects (instances of :class:`BufferedReader`, 1030:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) 1031protect their internal structures using a lock; it is therefore safe to call 1032them from multiple threads at once. 1033 1034:class:`TextIOWrapper` objects are not thread-safe. 1035 1036Reentrancy 1037^^^^^^^^^^ 1038 1039Binary buffered objects (instances of :class:`BufferedReader`, 1040:class:`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) 1041are not reentrant. While reentrant calls will not happen in normal situations, 1042they can arise from doing I/O in a :mod:`signal` handler. If a thread tries to 1043re-enter a buffered object which it is already accessing, a :exc:`RuntimeError` 1044is raised. Note this doesn't prohibit a different thread from entering the 1045buffered object. 1046 1047The above implicitly extends to text files, since the :func:`open()` function 1048will wrap a buffered object inside a :class:`TextIOWrapper`. This includes 1049standard streams and therefore affects the built-in function :func:`print()` as 1050well. 1051 1052