summaryrefslogtreecommitdiff
path: root/Doc/library/subprocess.rst
diff options
context:
space:
mode:
authorAndrew Svetlov <andrew.svetlov@gmail.com>2012-08-13 22:11:14 +0300
committerAndrew Svetlov <andrew.svetlov@gmail.com>2012-08-13 22:11:14 +0300
commit4805fa862ed1041e84c01f3293b73f50d3055693 (patch)
treed671d73c88398dce10ec6362b6b9724302ccf488 /Doc/library/subprocess.rst
parentac23c9ea7f3c86bef03755a775cc058219260e9e (diff)
parent50be452e0fcc33195ce7d93bb808ca4be9654bd6 (diff)
downloadcpython-git-4805fa862ed1041e84c01f3293b73f50d3055693.tar.gz
Issue #15561: Update subprocess docs to reference io.TextIOWrapper.
Patch by Chris Jerdonek.
Diffstat (limited to 'Doc/library/subprocess.rst')
-rw-r--r--Doc/library/subprocess.rst46
1 files changed, 27 insertions, 19 deletions
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index a67bf646e9..7557c928be 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -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.