Read all the data from the binary file-like object *fp*, parse the
resulting bytes, and return the message object. *fp* must support
- both the :meth:`~io.IOBase.readline` and the :meth:`~io.IOBase.read`
+ both the :meth:`~io.IOBase.readline` and the :meth:`~io.BufferedIOBase.read`
methods.
The bytes contained in *fp* must be formatted as a block of :rfc:`5322`
This function is intended for low-level I/O. For normal usage, use the
built-in function :func:`open`, which returns a :term:`file object` with
- :meth:`~file.read` and :meth:`~file.write` methods (and many more). To
- wrap a file descriptor in a file object, use :func:`fdopen`.
+ :meth:`~io.BufferedIOBase.read` and :meth:`~io.BufferedIOBase.write` methods.
+ To wrap a file descriptor in a file object, use :func:`fdopen`.
.. versionchanged:: 3.3
Added the *dir_fd* parameter.
descriptor as returned by :func:`os.open` or :func:`pipe`. To read a
"file object" returned by the built-in function :func:`open` or by
:func:`popen` or :func:`fdopen`, or :data:`sys.stdin`, use its
- :meth:`~file.read` or :meth:`~file.readline` methods.
+ :meth:`~io.TextIOBase.read` or :meth:`~io.IOBase.readline` methods.
.. versionchanged:: 3.5
If the system call is interrupted and the signal handler does not raise an
descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
object" returned by the built-in function :func:`open` or by :func:`popen` or
:func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
- :meth:`~file.write` method.
+ :meth:`~io.TextIOBase.write` method.
.. versionchanged:: 3.5
If the system call is interrupted and the signal handler does not raise an
The current process is replaced immediately. Open file objects and
descriptors are not flushed, so if there may be data buffered
on these open files, you should flush them using
- :func:`sys.stdout.flush` or :func:`os.fsync` before calling an
+ :func:`~io.IOBase.flush` or :func:`os.fsync` before calling an
:func:`exec\* <execl>` function.
The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how
:meth:`~socket.socket.makefile` method of socket objects (and perhaps by
other functions or methods provided by extension modules).
+File objects implement common methods, listed below, to simplify usage in
+generic code. They are expected to be :ref:`context-managers`.
+
The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are
initialized to file objects corresponding to the interpreter's standard
input, output and error streams; they are all open in text mode and
therefore follow the interface defined by the :class:`io.TextIOBase`
abstract class.
+.. method:: file.read(size=-1, /)
+
+ Retrieve up to *size* data from the file. As a convenience if *size* is
+ unspecified or -1 retrieve all data available.
+
+.. method:: file.write(data, /)
+
+ Store *data* to the file.
+
+.. method:: file.close()
+
+ Flush any buffers and close the underlying file.
+
Internal types
--------------