mirror of
https://github.com/python/cpython.git
synced 2026-01-04 14:32:21 +00:00
Issue #15561: Update subprocess docs to reference io.TextIOWrapper.
Patch by Chris Jerdonek.
This commit is contained in:
commit
4805fa862e
2 changed files with 29 additions and 20 deletions
|
|
@ -754,7 +754,8 @@ Text I/O
|
|||
It inherits :class:`TextIOBase`.
|
||||
|
||||
*encoding* gives the name of the encoding that the stream will be decoded or
|
||||
encoded with. It defaults to ``locale.getpreferredencoding(False)``.
|
||||
encoded with. It defaults to
|
||||
:func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`.
|
||||
|
||||
*errors* is an optional string that specifies how encoding and decoding
|
||||
errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError`
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ use cases, the underlying :class:`Popen` interface can be used directly.
|
|||
decoding to text will often need to be handled at the application level.
|
||||
|
||||
This behaviour may be overridden by setting *universal_newlines* to
|
||||
:const:`True` as described below in :ref:`frequently-used-arguments`.
|
||||
``True`` as described below in :ref:`frequently-used-arguments`.
|
||||
|
||||
To also capture standard error in the result, use
|
||||
``stderr=subprocess.STDOUT``::
|
||||
|
|
@ -285,18 +285,35 @@ default values. The arguments that are most commonly needed are:
|
|||
:data:`STDOUT`, which indicates that the stderr data from the child
|
||||
process should be captured into the same file handle as for *stdout*.
|
||||
|
||||
When *stdout* or *stderr* are pipes and *universal_newlines* is
|
||||
:const:`True` then the output data is assumed to be encoded as UTF-8 and
|
||||
will automatically be decoded to text. All line endings will be converted
|
||||
to ``'\n'`` as described for the universal newlines ``'U'`` mode argument
|
||||
to :func:`open`.
|
||||
If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
|
||||
and *stderr* will be opened as text streams with universal newlines support,
|
||||
using the encoding returned by :func:`locale.getpreferredencoding`.
|
||||
For *stdin*, line ending characters ``'\n'`` in the input will be converted
|
||||
to the default line separator :data:`os.linesep`. For *stdout* and
|
||||
*stderr*, all line endings in the output will be converted to ``'\n'``.
|
||||
For more information see the documentation of the :class:`io.TextIOWrapper`
|
||||
class when the *newline* argument to its constructor is ``None``.
|
||||
|
||||
If *shell* is :const:`True`, the specified command will be executed through
|
||||
.. note::
|
||||
|
||||
The *universal_newlines* feature is supported only if Python is built
|
||||
with universal newline support (the default). Also, the newlines
|
||||
attribute of the file objects :attr:`Popen.stdin`, :attr:`Popen.stdout`
|
||||
and :attr:`Popen.stderr` are not updated by the
|
||||
:meth:`Popen.communicate` method.
|
||||
|
||||
If *shell* is ``True``, the specified command will be executed through
|
||||
the shell. This can be useful if you are using Python primarily for the
|
||||
enhanced control flow it offers over most system shells and still want
|
||||
access to other shell features such as filename wildcards, shell pipes and
|
||||
environment variable expansion.
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
When *universal_newlines* is ``True``, the class uses the encoding
|
||||
:func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
|
||||
instead of ``locale.getpreferredencoding()``. See the
|
||||
:class:`io.TextIOWrapper` class for more information on this change.
|
||||
|
||||
.. warning::
|
||||
|
||||
Executing shell commands that incorporate unsanitized input from an
|
||||
|
|
@ -490,18 +507,9 @@ functions.
|
|||
|
||||
.. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
|
||||
|
||||
If *universal_newlines* is :const:`True`, the file objects stdout and stderr are
|
||||
opened as text files, but lines may be terminated by any of ``'\n'``, the Unix
|
||||
end-of-line convention, ``'\r'``, the old Macintosh convention or ``'\r\n'``, the
|
||||
Windows convention. All of these external representations are seen as ``'\n'``
|
||||
by the Python program.
|
||||
|
||||
.. note::
|
||||
|
||||
This feature is only available if Python is built with universal newline
|
||||
support (the default). Also, the newlines attribute of the file objects
|
||||
:attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
|
||||
:meth:`communicate` method.
|
||||
If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
|
||||
and *stderr* are opened as text files with universal newlines support, as
|
||||
described above in :ref:`frequently-used-arguments`.
|
||||
|
||||
If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
|
||||
passed to the underlying ``CreateProcess`` function.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue