blob: aa889ed00b031d1cea895f254775930fb653b06d [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`subprocess` --- Subprocess management
2===========================================
3
4.. module:: subprocess
5 :synopsis: Subprocess management.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04006
Georg Brandl116aa622007-08-15 14:28:22 +00007.. moduleauthor:: Peter Åstrand <astrand@lysator.liu.se>
8.. sectionauthor:: Peter Åstrand <astrand@lysator.liu.se>
9
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040010**Source code:** :source:`Lib/subprocess.py`
11
12--------------
Georg Brandl116aa622007-08-15 14:28:22 +000013
Georg Brandl116aa622007-08-15 14:28:22 +000014The :mod:`subprocess` module allows you to spawn new processes, connect to their
15input/output/error pipes, and obtain their return codes. This module intends to
Benjamin Peterson5eea8a72014-03-12 21:41:35 -050016replace several older modules and functions::
Georg Brandl116aa622007-08-15 14:28:22 +000017
18 os.system
19 os.spawn*
Georg Brandl116aa622007-08-15 14:28:22 +000020
21Information about how the :mod:`subprocess` module can be used to replace these
22modules and functions can be found in the following sections.
23
Benjamin Peterson41181742008-07-02 20:22:54 +000024.. seealso::
25
26 :pep:`324` -- PEP proposing the subprocess module
27
Georg Brandl116aa622007-08-15 14:28:22 +000028
Ezio Melotti402f75d2012-11-08 10:07:10 +020029Using the :mod:`subprocess` Module
30----------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +000031
Gregory P. Smith6e730002015-04-14 16:14:25 -070032The recommended approach to invoking subprocesses is to use the :func:`run`
Benjamin Petersonef9ffcb2015-04-14 22:12:14 -040033function for all use cases it can handle. For more advanced use cases, the
34underlying :class:`Popen` interface can be used directly.
Nick Coghlanc29248f2011-11-08 20:49:23 +100035
Gregory P. Smith6e730002015-04-14 16:14:25 -070036The :func:`run` function was added in Python 3.5; if you need to retain
37compatibility with older versions, see the :ref:`call-function-trio` section.
Nick Coghlanc29248f2011-11-08 20:49:23 +100038
Gregory P. Smith6e730002015-04-14 16:14:25 -070039
40.. function:: run(args, *, stdin=None, input=None, stdout=None, stderr=None,\
Andriy Maletsky22d131a2018-08-09 23:01:54 +030041 capture_output=False, shell=False, cwd=None, timeout=None, \
42 check=False, encoding=None, errors=None, text=None, env=None)
Nick Coghlanc29248f2011-11-08 20:49:23 +100043
44 Run the command described by *args*. Wait for command to complete, then
Gregory P. Smith6e730002015-04-14 16:14:25 -070045 return a :class:`CompletedProcess` instance.
Nick Coghlanc29248f2011-11-08 20:49:23 +100046
47 The arguments shown above are merely the most common ones, described below
Nick Coghlan217f05b2011-11-08 22:11:21 +100048 in :ref:`frequently-used-arguments` (hence the use of keyword-only notation
49 in the abbreviated signature). The full function signature is largely the
Bo Baylesce0f33d2018-01-30 00:40:39 -060050 same as that of the :class:`Popen` constructor - most of the arguments to
51 this function are passed through to that interface. (*timeout*, *input*,
52 *check*, and *capture_output* are not.)
Nick Coghlan217f05b2011-11-08 22:11:21 +100053
Bo Baylesce0f33d2018-01-30 00:40:39 -060054 If *capture_output* is true, stdout and stderr will be captured.
55 When used, the internal :class:`Popen` object is automatically created with
56 ``stdout=PIPE`` and ``stderr=PIPE``. The *stdout* and *stderr* arguments may
57 not be used as well.
Nick Coghlanc29248f2011-11-08 20:49:23 +100058
Gregory P. Smith6e730002015-04-14 16:14:25 -070059 The *timeout* argument is passed to :meth:`Popen.communicate`. If the timeout
60 expires, the child process will be killed and waited for. The
Nick Coghlan217f05b2011-11-08 22:11:21 +100061 :exc:`TimeoutExpired` exception will be re-raised after the child process
62 has terminated.
Nick Coghlanc29248f2011-11-08 20:49:23 +100063
Serhiy Storchakafcd9f222013-04-22 20:20:54 +030064 The *input* argument is passed to :meth:`Popen.communicate` and thus to the
65 subprocess's stdin. If used it must be a byte sequence, or a string if
andyclegg7fed7bd2017-10-23 03:01:19 +010066 *encoding* or *errors* is specified or *text* is true. When
Steve Dower050acae2016-09-06 20:16:17 -070067 used, the internal :class:`Popen` object is automatically created with
68 ``stdin=PIPE``, and the *stdin* argument may not be used as well.
Serhiy Storchakafcd9f222013-04-22 20:20:54 +030069
Serhiy Storchaka4adf01c2016-10-19 18:30:05 +030070 If *check* is true, and the process exits with a non-zero exit code, a
Gregory P. Smith6e730002015-04-14 16:14:25 -070071 :exc:`CalledProcessError` exception will be raised. Attributes of that
72 exception hold the arguments, the exit code, and stdout and stderr if they
73 were captured.
74
andyclegg7fed7bd2017-10-23 03:01:19 +010075 If *encoding* or *errors* are specified, or *text* is true,
Steve Dower050acae2016-09-06 20:16:17 -070076 file objects for stdin, stdout and stderr are opened in text mode using the
77 specified *encoding* and *errors* or the :class:`io.TextIOWrapper` default.
andyclegg7fed7bd2017-10-23 03:01:19 +010078 The *universal_newlines* argument is equivalent to *text* and is provided
79 for backwards compatibility. By default, file objects are opened in binary mode.
Steve Dower050acae2016-09-06 20:16:17 -070080
Tobias Kunzeaf1ec972018-06-05 13:41:42 +020081 If *env* is not ``None``, it must be a mapping that defines the environment
82 variables for the new process; these are used instead of the default
83 behavior of inheriting the current process' environment. It is passed directly
84 to :class:`Popen`.
85
Nick Coghlanc29248f2011-11-08 20:49:23 +100086 Examples::
87
Gregory P. Smith6e730002015-04-14 16:14:25 -070088 >>> subprocess.run(["ls", "-l"]) # doesn't capture output
89 CompletedProcess(args=['ls', '-l'], returncode=0)
Nick Coghlanc29248f2011-11-08 20:49:23 +100090
Gregory P. Smith6e730002015-04-14 16:14:25 -070091 >>> subprocess.run("exit 1", shell=True, check=True)
Nick Coghlanc29248f2011-11-08 20:49:23 +100092 Traceback (most recent call last):
Gregory P. Smith6e730002015-04-14 16:14:25 -070093 ...
Nick Coghlanc29248f2011-11-08 20:49:23 +100094 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
95
Bo Baylesce0f33d2018-01-30 00:40:39 -060096 >>> subprocess.run(["ls", "-l", "/dev/null"], capture_output=True)
Gregory P. Smith6e730002015-04-14 16:14:25 -070097 CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
Bo Baylesce0f33d2018-01-30 00:40:39 -060098 stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n', stderr=b'')
Nick Coghlanc29248f2011-11-08 20:49:23 +100099
Gregory P. Smith6e730002015-04-14 16:14:25 -0700100 .. versionadded:: 3.5
Nick Coghlanc29248f2011-11-08 20:49:23 +1000101
Steve Dower050acae2016-09-06 20:16:17 -0700102 .. versionchanged:: 3.6
103
104 Added *encoding* and *errors* parameters
105
andyclegg7fed7bd2017-10-23 03:01:19 +0100106 .. versionchanged:: 3.7
107
Bo Baylesce0f33d2018-01-30 00:40:39 -0600108 Added the *text* parameter, as a more understandable alias of *universal_newlines*.
109 Added the *capture_output* parameter.
andyclegg7fed7bd2017-10-23 03:01:19 +0100110
Gregory P. Smith6e730002015-04-14 16:14:25 -0700111.. class:: CompletedProcess
Nick Coghlanc29248f2011-11-08 20:49:23 +1000112
Gregory P. Smith6e730002015-04-14 16:14:25 -0700113 The return value from :func:`run`, representing a process that has finished.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000114
Gregory P. Smith6e730002015-04-14 16:14:25 -0700115 .. attribute:: args
Nick Coghlanc29248f2011-11-08 20:49:23 +1000116
Gregory P. Smith6e730002015-04-14 16:14:25 -0700117 The arguments used to launch the process. This may be a list or a string.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000118
Gregory P. Smith6e730002015-04-14 16:14:25 -0700119 .. attribute:: returncode
Serhiy Storchakafcd9f222013-04-22 20:20:54 +0300120
Gregory P. Smith6e730002015-04-14 16:14:25 -0700121 Exit status of the child process. Typically, an exit status of 0 indicates
122 that it ran successfully.
Nick Coghlan217f05b2011-11-08 22:11:21 +1000123
Gregory P. Smith6e730002015-04-14 16:14:25 -0700124 A negative value ``-N`` indicates that the child was terminated by signal
125 ``N`` (POSIX only).
126
127 .. attribute:: stdout
128
129 Captured stdout from the child process. A bytes sequence, or a string if
andyclegg7fed7bd2017-10-23 03:01:19 +0100130 :func:`run` was called with an encoding, errors, or text=True.
131 ``None`` if stdout was not captured.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700132
133 If you ran the process with ``stderr=subprocess.STDOUT``, stdout and
134 stderr will be combined in this attribute, and :attr:`stderr` will be
Serhiy Storchakaecf41da2016-10-19 16:29:26 +0300135 ``None``.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700136
137 .. attribute:: stderr
138
139 Captured stderr from the child process. A bytes sequence, or a string if
andyclegg7fed7bd2017-10-23 03:01:19 +0100140 :func:`run` was called with an encoding, errors, or text=True.
141 ``None`` if stderr was not captured.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700142
143 .. method:: check_returncode()
144
145 If :attr:`returncode` is non-zero, raise a :exc:`CalledProcessError`.
146
147 .. versionadded:: 3.5
Nick Coghlan217f05b2011-11-08 22:11:21 +1000148
149.. data:: DEVNULL
150
151 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
152 to :class:`Popen` and indicates that the special file :data:`os.devnull`
153 will be used.
154
155 .. versionadded:: 3.3
156
Nick Coghlanc29248f2011-11-08 20:49:23 +1000157
158.. data:: PIPE
159
160 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
161 to :class:`Popen` and indicates that a pipe to the standard stream should be
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700162 opened. Most useful with :meth:`Popen.communicate`.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000163
164
165.. data:: STDOUT
166
167 Special value that can be used as the *stderr* argument to :class:`Popen` and
168 indicates that standard error should go into the same handle as standard
169 output.
170
171
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300172.. exception:: SubprocessError
173
174 Base class for all other exceptions from this module.
175
176 .. versionadded:: 3.3
177
178
179.. exception:: TimeoutExpired
180
181 Subclass of :exc:`SubprocessError`, raised when a timeout expires
182 while waiting for a child process.
183
184 .. attribute:: cmd
185
186 Command that was used to spawn the child process.
187
188 .. attribute:: timeout
189
190 Timeout in seconds.
191
192 .. attribute:: output
193
Gregory P. Smith6e730002015-04-14 16:14:25 -0700194 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300195 :func:`check_output`. Otherwise, ``None``.
196
Gregory P. Smith6e730002015-04-14 16:14:25 -0700197 .. attribute:: stdout
198
199 Alias for output, for symmetry with :attr:`stderr`.
200
201 .. attribute:: stderr
202
203 Stderr output of the child process if it was captured by :func:`run`.
204 Otherwise, ``None``.
205
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300206 .. versionadded:: 3.3
207
Gregory P. Smith6e730002015-04-14 16:14:25 -0700208 .. versionchanged:: 3.5
209 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300210
211.. exception:: CalledProcessError
212
213 Subclass of :exc:`SubprocessError`, raised when a process run by
214 :func:`check_call` or :func:`check_output` returns a non-zero exit status.
215
216 .. attribute:: returncode
217
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)583a1d62016-06-03 00:31:21 +0000218 Exit status of the child process. If the process exited due to a
219 signal, this will be the negative signal number.
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300220
221 .. attribute:: cmd
222
223 Command that was used to spawn the child process.
224
225 .. attribute:: output
226
Gregory P. Smith6e730002015-04-14 16:14:25 -0700227 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300228 :func:`check_output`. Otherwise, ``None``.
229
Gregory P. Smith6e730002015-04-14 16:14:25 -0700230 .. attribute:: stdout
231
232 Alias for output, for symmetry with :attr:`stderr`.
233
234 .. attribute:: stderr
235
236 Stderr output of the child process if it was captured by :func:`run`.
237 Otherwise, ``None``.
238
239 .. versionchanged:: 3.5
240 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300241
242
Nick Coghlanc29248f2011-11-08 20:49:23 +1000243.. _frequently-used-arguments:
244
245Frequently Used Arguments
246^^^^^^^^^^^^^^^^^^^^^^^^^
247
248To support a wide variety of use cases, the :class:`Popen` constructor (and
249the convenience functions) accept a large number of optional arguments. For
250most typical use cases, many of these arguments can be safely left at their
251default values. The arguments that are most commonly needed are:
252
253 *args* is required for all calls and should be a string, or a sequence of
254 program arguments. Providing a sequence of arguments is generally
255 preferred, as it allows the module to take care of any required escaping
256 and quoting of arguments (e.g. to permit spaces in file names). If passing
257 a single string, either *shell* must be :const:`True` (see below) or else
258 the string must simply name the program to be executed without specifying
259 any arguments.
260
261 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
262 standard output and standard error file handles, respectively. Valid values
Nick Coghlan217f05b2011-11-08 22:11:21 +1000263 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
264 integer), an existing file object, and ``None``. :data:`PIPE` indicates
265 that a new pipe to the child should be created. :data:`DEVNULL` indicates
266 that the special file :data:`os.devnull` will be used. With the default
267 settings of ``None``, no redirection will occur; the child's file handles
268 will be inherited from the parent. Additionally, *stderr* can be
269 :data:`STDOUT`, which indicates that the stderr data from the child
270 process should be captured into the same file handle as for *stdout*.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000271
R David Murray1b00f252012-08-15 10:43:58 -0400272 .. index::
273 single: universal newlines; subprocess module
274
Pablo Galindoe14c0102018-02-11 20:58:23 +0000275 If *encoding* or *errors* are specified, or *text* (also known as
276 *universal_newlines*) is true,
Steve Dower050acae2016-09-06 20:16:17 -0700277 the file objects *stdin*, *stdout* and *stderr* will be opened in text
278 mode using the *encoding* and *errors* specified in the call or the
279 defaults for :class:`io.TextIOWrapper`.
Ronald Oussoren385521c2013-07-07 09:26:45 +0200280
Steve Dower050acae2016-09-06 20:16:17 -0700281 For *stdin*, line ending characters ``'\n'`` in the input will be converted
282 to the default line separator :data:`os.linesep`. For *stdout* and *stderr*,
283 all line endings in the output will be converted to ``'\n'``. For more
284 information see the documentation of the :class:`io.TextIOWrapper` class
285 when the *newline* argument to its constructor is ``None``.
286
287 If text mode is not used, *stdin*, *stdout* and *stderr* will be opened as
288 binary streams. No encoding or line ending conversion is performed.
289
290 .. versionadded:: 3.6
291 Added *encoding* and *errors* parameters.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000292
Pablo Galindoe14c0102018-02-11 20:58:23 +0000293 .. versionadded:: 3.7
294 Added the *text* parameter as an alias for *universal_newlines*.
295
Andrew Svetlov50be4522012-08-13 22:09:04 +0300296 .. note::
297
Gregory P. Smith1f8a40b2013-03-20 18:32:03 -0700298 The newlines attribute of the file objects :attr:`Popen.stdin`,
299 :attr:`Popen.stdout` and :attr:`Popen.stderr` are not updated by
300 the :meth:`Popen.communicate` method.
Andrew Svetlov50be4522012-08-13 22:09:04 +0300301
302 If *shell* is ``True``, the specified command will be executed through
Ezio Melotti186d5232012-09-15 08:34:08 +0300303 the shell. This can be useful if you are using Python primarily for the
Nick Coghlanc29248f2011-11-08 20:49:23 +1000304 enhanced control flow it offers over most system shells and still want
Ezio Melotti186d5232012-09-15 08:34:08 +0300305 convenient access to other shell features such as shell pipes, filename
306 wildcards, environment variable expansion, and expansion of ``~`` to a
307 user's home directory. However, note that Python itself offers
308 implementations of many shell-like features (in particular, :mod:`glob`,
309 :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
310 :func:`os.path.expanduser`, and :mod:`shutil`).
Nick Coghlanc29248f2011-11-08 20:49:23 +1000311
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300312 .. versionchanged:: 3.3
313 When *universal_newlines* is ``True``, the class uses the encoding
314 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
315 instead of ``locale.getpreferredencoding()``. See the
316 :class:`io.TextIOWrapper` class for more information on this change.
317
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700318 .. note::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000319
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700320 Read the `Security Considerations`_ section before using ``shell=True``.
Andrew Svetlovc2415eb2012-10-28 11:42:26 +0200321
Nick Coghlanc29248f2011-11-08 20:49:23 +1000322These options, along with all of the other options, are described in more
323detail in the :class:`Popen` constructor documentation.
324
325
Sandro Tosi1526ad12011-12-25 11:27:37 +0100326Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100327^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000328
329The underlying process creation and management in this module is handled by
330the :class:`Popen` class. It offers a lot of flexibility so that developers
331are able to handle the less common cases not covered by the convenience
332functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700335.. class:: Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, \
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700336 stderr=None, preexec_fn=None, close_fds=True, shell=False, \
337 cwd=None, env=None, universal_newlines=False, \
338 startupinfo=None, creationflags=0, restore_signals=True, \
Steve Dower050acae2016-09-06 20:16:17 -0700339 start_new_session=False, pass_fds=(), *, \
Pablo Galindoe14c0102018-02-11 20:58:23 +0000340 encoding=None, errors=None, text=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000341
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700342 Execute a child program in a new process. On POSIX, the class uses
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700343 :meth:`os.execvp`-like behavior to execute the child program. On Windows,
344 the class uses the Windows ``CreateProcess()`` function. The arguments to
345 :class:`Popen` are as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000346
Serhiy Storchakabe50a7b2018-02-28 01:03:46 +0200347 *args* should be a sequence of program arguments or else a single string.
348 By default, the program to execute is the first item in *args* if *args* is
349 a sequence. If *args* is a string, the interpretation is
350 platform-dependent and described below. See the *shell* and *executable*
351 arguments for additional differences from the default behavior. Unless
352 otherwise stated, it is recommended to pass *args* as a sequence.
Georg Brandl116aa622007-08-15 14:28:22 +0000353
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700354 On POSIX, if *args* is a string, the string is interpreted as the name or
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700355 path of the program to execute. However, this can only be done if not
356 passing arguments to the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000357
R. David Murray5973e4d2010-02-04 16:41:57 +0000358 .. note::
359
360 :meth:`shlex.split` can be useful when determining the correct
361 tokenization for *args*, especially in complex cases::
362
363 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000364 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000365 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
366 >>> args = shlex.split(command_line)
367 >>> print(args)
368 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
369 >>> p = subprocess.Popen(args) # Success!
370
371 Note in particular that options (such as *-input*) and arguments (such
372 as *eggs.txt*) that are separated by whitespace in the shell go in separate
373 list elements, while arguments that need quoting or backslash escaping when
374 used in the shell (such as filenames containing spaces or the *echo* command
375 shown above) are single list elements.
376
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700377 On Windows, if *args* is a sequence, it will be converted to a string in a
378 manner described in :ref:`converting-argument-sequence`. This is because
379 the underlying ``CreateProcess()`` operates on strings.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700380
Serhiy Storchakaa97cd2e2016-10-19 16:43:42 +0300381 The *shell* argument (which defaults to ``False``) specifies whether to use
382 the shell as the program to execute. If *shell* is ``True``, it is
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700383 recommended to pass *args* as a string rather than as a sequence.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700384
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700385 On POSIX with ``shell=True``, the shell defaults to :file:`/bin/sh`. If
Chris Jerdonek470ee392012-10-08 23:06:57 -0700386 *args* is a string, the string specifies the command
387 to execute through the shell. This means that the string must be
R. David Murray5973e4d2010-02-04 16:41:57 +0000388 formatted exactly as it would be when typed at the shell prompt. This
389 includes, for example, quoting or backslash escaping filenames with spaces in
390 them. If *args* is a sequence, the first item specifies the command string, and
391 any additional items will be treated as additional arguments to the shell
Chris Jerdonek470ee392012-10-08 23:06:57 -0700392 itself. That is to say, :class:`Popen` does the equivalent of::
R. David Murray5973e4d2010-02-04 16:41:57 +0000393
394 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000395
Chris Jerdonek470ee392012-10-08 23:06:57 -0700396 On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
397 specifies the default shell. The only time you need to specify
398 ``shell=True`` on Windows is when the command you wish to execute is built
399 into the shell (e.g. :command:`dir` or :command:`copy`). You do not need
400 ``shell=True`` to run a batch file or console-based executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000401
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700402 .. note::
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700403
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700404 Read the `Security Considerations`_ section before using ``shell=True``.
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700405
Antoine Pitrouafe8d062014-09-21 21:10:56 +0200406 *bufsize* will be supplied as the corresponding argument to the
407 :func:`open` function when creating the stdin/stdout/stderr pipe
408 file objects:
409
410 - :const:`0` means unbuffered (read and write are one
411 system call and can return short)
412 - :const:`1` means line buffered
413 (only usable if ``universal_newlines=True`` i.e., in a text mode)
414 - any other positive value means use a buffer of approximately that
415 size
416 - negative bufsize (the default) means the system default of
417 io.DEFAULT_BUFFER_SIZE will be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000418
Georg Brandl37b70bb2013-11-25 08:48:37 +0100419 .. versionchanged:: 3.3.1
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700420 *bufsize* now defaults to -1 to enable buffering by default to match the
Georg Brandl37b70bb2013-11-25 08:48:37 +0100421 behavior that most code expects. In versions prior to Python 3.2.4 and
422 3.3.1 it incorrectly defaulted to :const:`0` which was unbuffered
423 and allowed short reads. This was unintentional and did not match the
424 behavior of Python 2 as most code expected.
Antoine Pitrou4b876202010-06-02 17:10:49 +0000425
Chris Jerdonek470ee392012-10-08 23:06:57 -0700426 The *executable* argument specifies a replacement program to execute. It
427 is very seldom needed. When ``shell=False``, *executable* replaces the
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700428 program to execute specified by *args*. However, the original *args* is
429 still passed to the program. Most programs treat the program specified
430 by *args* as the command name, which can then be different from the program
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700431 actually executed. On POSIX, the *args* name
Chris Jerdonek470ee392012-10-08 23:06:57 -0700432 becomes the display name for the executable in utilities such as
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700433 :program:`ps`. If ``shell=True``, on POSIX the *executable* argument
Chris Jerdonek470ee392012-10-08 23:06:57 -0700434 specifies a replacement shell for the default :file:`/bin/sh`.
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Nick Coghlanc29248f2011-11-08 20:49:23 +1000436 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000437 standard output and standard error file handles, respectively. Valid values
Ross Lagerwallba102ec2011-03-16 18:40:25 +0200438 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
439 integer), an existing :term:`file object`, and ``None``. :data:`PIPE`
440 indicates that a new pipe to the child should be created. :data:`DEVNULL`
Nick Coghlan217f05b2011-11-08 22:11:21 +1000441 indicates that the special file :data:`os.devnull` will be used. With the
442 default settings of ``None``, no redirection will occur; the child's file
443 handles will be inherited from the parent. Additionally, *stderr* can be
444 :data:`STDOUT`, which indicates that the stderr data from the applications
445 should be captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000448 child process just before the child is executed.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700449 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000450
451 .. warning::
452
453 The *preexec_fn* parameter is not safe to use in the presence of threads
454 in your application. The child process could deadlock before exec is
455 called.
456 If you must use it, keep it trivial! Minimize the number of libraries
457 you call into.
458
459 .. note::
460
461 If you need to modify the environment for the child use the *env*
462 parameter rather than doing it in a *preexec_fn*.
463 The *start_new_session* parameter can take the place of a previously
464 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000465
466 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
Gregory P. Smithdfb6e542018-03-25 10:27:59 -0700467 :const:`2` will be closed before the child process is executed. Otherwise
468 when *close_fds* is false, file descriptors obey their inheritable flag
469 as described in :ref:`fd_inheritance`.
470
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000471 On Windows, if *close_fds* is true then no handles will be inherited by the
Segev Finerb2a60832017-12-18 11:28:19 +0200472 child process unless explicitly passed in the ``handle_list`` element of
473 :attr:`STARTUPINFO.lpAttributeList`, or by standard handle redirection.
Georg Brandl116aa622007-08-15 14:28:22 +0000474
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000475 .. versionchanged:: 3.2
476 The default for *close_fds* was changed from :const:`False` to
477 what is described above.
478
Segev Finerb2a60832017-12-18 11:28:19 +0200479 .. versionchanged:: 3.7
480 On Windows the default for *close_fds* was changed from :const:`False` to
481 :const:`True` when redirecting the standard handles. It's now possible to
482 set *close_fds* to :const:`True` when redirecting the standard handles.
483
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000484 *pass_fds* is an optional sequence of file descriptors to keep open
485 between the parent and child. Providing any *pass_fds* forces
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700486 *close_fds* to be :const:`True`. (POSIX only)
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000487
Sergey Fedoseevf1202882018-07-06 05:01:16 +0500488 .. versionchanged:: 3.2
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000489 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000490
Chris Jerdonekec3ea942012-09-30 00:10:28 -0700491 If *cwd* is not ``None``, the function changes the working directory to
Sayan Chowdhuryd5c11f72017-02-26 22:36:10 +0530492 *cwd* before executing the child. *cwd* can be a :class:`str` and
493 :term:`path-like <path-like object>` object. In particular, the function
494 looks for *executable* (or for the first item in *args*) relative to *cwd*
495 if the executable path is a relative path.
496
497 .. versionchanged:: 3.6
498 *cwd* parameter accepts a :term:`path-like object`.
Georg Brandl116aa622007-08-15 14:28:22 +0000499
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200500 If *restore_signals* is true (the default) all signals that Python has set to
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000501 SIG_IGN are restored to SIG_DFL in the child process before the exec.
502 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700503 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000504
505 .. versionchanged:: 3.2
506 *restore_signals* was added.
507
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200508 If *start_new_session* is true the setsid() system call will be made in the
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700509 child process prior to the execution of the subprocess. (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000510
511 .. versionchanged:: 3.2
512 *start_new_session* was added.
513
Christian Heimesa342c012008-04-20 21:01:16 +0000514 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000515 variables for the new process; these are used instead of the default
516 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000517
R. David Murray1055e892009-04-16 18:15:32 +0000518 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000519
Georg Brandl2708f3a2009-12-20 14:38:23 +0000520 If specified, *env* must provide any variables required for the program to
521 execute. On Windows, in order to run a `side-by-side assembly`_ the
522 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000523
Georg Brandl5d941342016-02-26 19:37:12 +0100524 .. _side-by-side assembly: https://en.wikipedia.org/wiki/Side-by-Side_Assembly
R. David Murray1055e892009-04-16 18:15:32 +0000525
Pablo Galindoe14c0102018-02-11 20:58:23 +0000526 If *encoding* or *errors* are specified, or *text* is true, the file objects
527 *stdin*, *stdout* and *stderr* are opened in text mode with the specified
528 encoding and *errors*, as described above in :ref:`frequently-used-arguments`.
529 The *universal_newlines* argument is equivalent to *text* and is provided
530 for backwards compatibility. By default, file objects are opened in binary mode.
Steve Dower050acae2016-09-06 20:16:17 -0700531
532 .. versionadded:: 3.6
533 *encoding* and *errors* were added.
Georg Brandl116aa622007-08-15 14:28:22 +0000534
Pablo Galindoe14c0102018-02-11 20:58:23 +0000535 .. versionadded:: 3.7
536 *text* was added as a more readable alias for *universal_newlines*.
537
Brian Curtine6242d72011-04-29 22:17:51 -0500538 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
539 passed to the underlying ``CreateProcess`` function.
Jamesb5d9e082017-11-08 14:18:59 +0000540 *creationflags*, if given, can be one or more of the following flags:
541
542 * :data:`CREATE_NEW_CONSOLE`
543 * :data:`CREATE_NEW_PROCESS_GROUP`
544 * :data:`ABOVE_NORMAL_PRIORITY_CLASS`
545 * :data:`BELOW_NORMAL_PRIORITY_CLASS`
546 * :data:`HIGH_PRIORITY_CLASS`
547 * :data:`IDLE_PRIORITY_CLASS`
548 * :data:`NORMAL_PRIORITY_CLASS`
549 * :data:`REALTIME_PRIORITY_CLASS`
550 * :data:`CREATE_NO_WINDOW`
551 * :data:`DETACHED_PROCESS`
552 * :data:`CREATE_DEFAULT_ERROR_MODE`
553 * :data:`CREATE_BREAKAWAY_FROM_JOB`
Georg Brandl116aa622007-08-15 14:28:22 +0000554
Gregory P. Smith6b657452011-05-11 21:42:08 -0700555 Popen objects are supported as context managers via the :keyword:`with` statement:
556 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000557 ::
558
559 with Popen(["ifconfig"], stdout=PIPE) as proc:
560 log.write(proc.stdout.read())
561
562 .. versionchanged:: 3.2
563 Added context manager support.
564
Victor Stinner5a48e212016-05-20 12:11:15 +0200565 .. versionchanged:: 3.6
566 Popen destructor now emits a :exc:`ResourceWarning` warning if the child
567 process is still running.
568
Georg Brandl116aa622007-08-15 14:28:22 +0000569
Georg Brandl116aa622007-08-15 14:28:22 +0000570Exceptions
571^^^^^^^^^^
572
573Exceptions raised in the child process, before the new program has started to
574execute, will be re-raised in the parent. Additionally, the exception object
575will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000576containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
578The most common exception raised is :exc:`OSError`. This occurs, for example,
579when trying to execute a non-existent file. Applications should prepare for
580:exc:`OSError` exceptions.
581
582A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
583arguments.
584
Nick Coghlanc29248f2011-11-08 20:49:23 +1000585:func:`check_call` and :func:`check_output` will raise
586:exc:`CalledProcessError` if the called process returns a non-zero return
587code.
Georg Brandl116aa622007-08-15 14:28:22 +0000588
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400589All of the functions and methods that accept a *timeout* parameter, such as
590:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
591the timeout expires before the process exits.
592
Ronald Oussorenc1577902011-03-16 10:03:10 -0400593Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400594
595 .. versionadded:: 3.3
596 The :exc:`SubprocessError` base class was added.
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700599Security Considerations
600-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000601
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700602Unlike some other popen functions, this implementation will never
603implicitly call a system shell. This means that all characters,
604including shell metacharacters, can safely be passed to child processes.
605If the shell is invoked explicitly, via ``shell=True``, it is the application's
606responsibility to ensure that all whitespace and metacharacters are
607quoted appropriately to avoid
Georg Brandl5d941342016-02-26 19:37:12 +0100608`shell injection <https://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700609vulnerabilities.
610
611When using ``shell=True``, the :func:`shlex.quote` function can be
612used to properly escape whitespace and shell metacharacters in strings
613that are going to be used to construct shell commands.
Georg Brandl116aa622007-08-15 14:28:22 +0000614
615
616Popen Objects
617-------------
618
619Instances of the :class:`Popen` class have the following methods:
620
621
622.. method:: Popen.poll()
623
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300624 Check if child process has terminated. Set and return
Ivan Chernoff006617f2017-08-29 17:46:24 +0300625 :attr:`~Popen.returncode` attribute. Otherwise, returns ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000626
627
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400628.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000629
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300630 Wait for child process to terminate. Set and return
631 :attr:`~Popen.returncode` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000632
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400633 If the process does not terminate after *timeout* seconds, raise a
634 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
635 retry the wait.
636
Victor Stinner07171242014-02-24 13:18:47 +0100637 .. note::
638
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700639 This will deadlock when using ``stdout=PIPE`` or ``stderr=PIPE``
640 and the child process generates enough output to a pipe such that
641 it blocks waiting for the OS pipe buffer to accept more data.
642 Use :meth:`Popen.communicate` when using pipes to avoid that.
643
644 .. note::
645
Victor Stinner07171242014-02-24 13:18:47 +0100646 The function is implemented using a busy loop (non-blocking call and
647 short sleeps). Use the :mod:`asyncio` module for an asynchronous wait:
648 see :class:`asyncio.create_subprocess_exec`.
649
Reid Kleckner28f13032011-03-14 12:36:53 -0400650 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400651 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400653.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000654
655 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400656 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700657 *input* argument should be data to be sent to the child process, or
Steve Dower050acae2016-09-06 20:16:17 -0700658 ``None``, if no data should be sent to the child. If streams were opened in
659 text mode, *input* must be a string. Otherwise, it must be bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000660
Victor Stinner39892052014-10-14 00:52:07 +0200661 :meth:`communicate` returns a tuple ``(stdout_data, stderr_data)``.
Steve Dower050acae2016-09-06 20:16:17 -0700662 The data will be strings if streams were opened in text mode; otherwise,
663 bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000664
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000665 Note that if you want to send data to the process's stdin, you need to create
666 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
667 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
668 ``stderr=PIPE`` too.
669
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400670 If the process does not terminate after *timeout* seconds, a
671 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
672 retrying communication will not lose any output.
673
674 The child process is not killed if the timeout expires, so in order to
675 cleanup properly a well-behaved application should kill the child process and
676 finish communication::
677
678 proc = subprocess.Popen(...)
679 try:
680 outs, errs = proc.communicate(timeout=15)
681 except TimeoutExpired:
682 proc.kill()
683 outs, errs = proc.communicate()
684
Christian Heimes7f044312008-01-06 17:05:40 +0000685 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000686
Christian Heimes7f044312008-01-06 17:05:40 +0000687 The data read is buffered in memory, so do not use this method if the data
688 size is large or unlimited.
689
Reid Kleckner28f13032011-03-14 12:36:53 -0400690 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400691 *timeout* was added.
692
Georg Brandl116aa622007-08-15 14:28:22 +0000693
Christian Heimesa342c012008-04-20 21:01:16 +0000694.. method:: Popen.send_signal(signal)
695
696 Sends the signal *signal* to the child.
697
698 .. note::
699
Brian Curtineb24d742010-04-12 17:16:38 +0000700 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000701 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000702 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000703
Christian Heimesa342c012008-04-20 21:01:16 +0000704
705.. method:: Popen.terminate()
706
707 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000708 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000709 to stop the child.
710
Christian Heimesa342c012008-04-20 21:01:16 +0000711
712.. method:: Popen.kill()
713
714 Kills the child. On Posix OSs the function sends SIGKILL to the child.
715 On Windows :meth:`kill` is an alias for :meth:`terminate`.
716
Christian Heimesa342c012008-04-20 21:01:16 +0000717
Georg Brandl116aa622007-08-15 14:28:22 +0000718The following attributes are also available:
719
Gregory P. Smith024c5ee2014-04-29 11:33:23 -0700720.. attribute:: Popen.args
721
722 The *args* argument as it was passed to :class:`Popen` -- a
723 sequence of program arguments or else a single string.
724
725 .. versionadded:: 3.3
Georg Brandl734e2682008-08-12 08:18:18 +0000726
Georg Brandl116aa622007-08-15 14:28:22 +0000727.. attribute:: Popen.stdin
728
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500729 If the *stdin* argument was :data:`PIPE`, this attribute is a writeable
Steve Dower050acae2016-09-06 20:16:17 -0700730 stream object as returned by :func:`open`. If the *encoding* or *errors*
731 arguments were specified or the *universal_newlines* argument was ``True``,
732 the stream is a text stream, otherwise it is a byte stream. If the *stdin*
733 argument was not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000734
735
736.. attribute:: Popen.stdout
737
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500738 If the *stdout* argument was :data:`PIPE`, this attribute is a readable
739 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700740 output from the child process. If the *encoding* or *errors* arguments were
741 specified or the *universal_newlines* argument was ``True``, the stream is a
742 text stream, otherwise it is a byte stream. If the *stdout* argument was not
743 :data:`PIPE`, this attribute is ``None``.
Benjamin Petersonaf69fe22014-01-18 00:49:04 -0500744
Georg Brandl116aa622007-08-15 14:28:22 +0000745
746.. attribute:: Popen.stderr
747
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500748 If the *stderr* argument was :data:`PIPE`, this attribute is a readable
749 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700750 error output from the child process. If the *encoding* or *errors* arguments
751 were specified or the *universal_newlines* argument was ``True``, the stream
752 is a text stream, otherwise it is a byte stream. If the *stderr* argument was
753 not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000754
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700755.. warning::
756
757 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
758 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
759 deadlocks due to any of the other OS pipe buffers filling up and blocking the
760 child process.
761
Georg Brandl116aa622007-08-15 14:28:22 +0000762
763.. attribute:: Popen.pid
764
765 The process ID of the child process.
766
Georg Brandl58bfdca2010-03-21 09:50:49 +0000767 Note that if you set the *shell* argument to ``True``, this is the process ID
768 of the spawned shell.
769
Georg Brandl116aa622007-08-15 14:28:22 +0000770
771.. attribute:: Popen.returncode
772
Christian Heimes7f044312008-01-06 17:05:40 +0000773 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
774 by :meth:`communicate`). A ``None`` value indicates that the process
775 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000776
Christian Heimes7f044312008-01-06 17:05:40 +0000777 A negative value ``-N`` indicates that the child was terminated by signal
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700778 ``N`` (POSIX only).
Georg Brandl116aa622007-08-15 14:28:22 +0000779
780
Brian Curtine6242d72011-04-29 22:17:51 -0500781Windows Popen Helpers
782---------------------
783
784The :class:`STARTUPINFO` class and following constants are only available
785on Windows.
786
Berker Peksagf5184742017-03-01 12:51:55 +0300787.. class:: STARTUPINFO(*, dwFlags=0, hStdInput=None, hStdOutput=None, \
Segev Finerb2a60832017-12-18 11:28:19 +0200788 hStdError=None, wShowWindow=0, lpAttributeList=None)
Brian Curtin73365dd2011-04-29 22:18:33 -0500789
Brian Curtine6242d72011-04-29 22:17:51 -0500790 Partial support of the Windows
Georg Brandl5d941342016-02-26 19:37:12 +0100791 `STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
Berker Peksagf5184742017-03-01 12:51:55 +0300792 structure is used for :class:`Popen` creation. The following attributes can
793 be set by passing them as keyword-only arguments.
794
795 .. versionchanged:: 3.7
796 Keyword-only argument support was added.
Brian Curtine6242d72011-04-29 22:17:51 -0500797
798 .. attribute:: dwFlags
799
Senthil Kumarana6bac952011-07-04 11:28:30 -0700800 A bit field that determines whether certain :class:`STARTUPINFO`
801 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500802
803 si = subprocess.STARTUPINFO()
804 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
805
806 .. attribute:: hStdInput
807
Senthil Kumarana6bac952011-07-04 11:28:30 -0700808 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
809 is the standard input handle for the process. If
810 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
811 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500812
813 .. attribute:: hStdOutput
814
Senthil Kumarana6bac952011-07-04 11:28:30 -0700815 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
816 is the standard output handle for the process. Otherwise, this attribute
817 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500818 buffer.
819
820 .. attribute:: hStdError
821
Senthil Kumarana6bac952011-07-04 11:28:30 -0700822 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
823 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500824 ignored and the default for standard error is the console window's buffer.
825
826 .. attribute:: wShowWindow
827
Senthil Kumarana6bac952011-07-04 11:28:30 -0700828 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500829 can be any of the values that can be specified in the ``nCmdShow``
830 parameter for the
Georg Brandl5d941342016-02-26 19:37:12 +0100831 `ShowWindow <https://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700832 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500833 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500834
Brian Curtine6242d72011-04-29 22:17:51 -0500835 :data:`SW_HIDE` is provided for this attribute. It is used when
836 :class:`Popen` is called with ``shell=True``.
837
Segev Finerb2a60832017-12-18 11:28:19 +0200838 .. attribute:: lpAttributeList
839
840 A dictionary of additional attributes for process creation as given in
841 ``STARTUPINFOEX``, see
842 `UpdateProcThreadAttribute <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686880(v=vs.85).aspx>`__.
843
844 Supported attributes:
845
846 **handle_list**
847 Sequence of handles that will be inherited. *close_fds* must be true if
848 non-empty.
849
850 The handles must be temporarily made inheritable by
851 :func:`os.set_handle_inheritable` when passed to the :class:`Popen`
852 constructor, else :class:`OSError` will be raised with Windows error
853 ``ERROR_INVALID_PARAMETER`` (87).
854
855 .. warning::
856
857 In a multithreaded process, use caution to avoid leaking handles
858 that are marked inheritable when combining this feature with
859 concurrent calls to other process creation functions that inherit
860 all handles such as :func:`os.system`. This also applies to
861 standard handle redirection, which temporarily creates inheritable
862 handles.
863
864 .. versionadded:: 3.7
Brian Curtine6242d72011-04-29 22:17:51 -0500865
Jamesb5d9e082017-11-08 14:18:59 +0000866Windows Constants
867^^^^^^^^^^^^^^^^^
Brian Curtine6242d72011-04-29 22:17:51 -0500868
869The :mod:`subprocess` module exposes the following constants.
870
871.. data:: STD_INPUT_HANDLE
872
873 The standard input device. Initially, this is the console input buffer,
874 ``CONIN$``.
875
876.. data:: STD_OUTPUT_HANDLE
877
878 The standard output device. Initially, this is the active console screen
879 buffer, ``CONOUT$``.
880
881.. data:: STD_ERROR_HANDLE
882
883 The standard error device. Initially, this is the active console screen
884 buffer, ``CONOUT$``.
885
886.. data:: SW_HIDE
887
888 Hides the window. Another window will be activated.
889
890.. data:: STARTF_USESTDHANDLES
891
892 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700893 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500894 contain additional information.
895
896.. data:: STARTF_USESHOWWINDOW
897
Senthil Kumarana6bac952011-07-04 11:28:30 -0700898 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500899 additional information.
900
901.. data:: CREATE_NEW_CONSOLE
902
903 The new process has a new console, instead of inheriting its parent's
904 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500905
Brian Curtin30401932011-04-29 22:20:57 -0500906.. data:: CREATE_NEW_PROCESS_GROUP
907
908 A :class:`Popen` ``creationflags`` parameter to specify that a new process
909 group will be created. This flag is necessary for using :func:`os.kill`
910 on the subprocess.
911
912 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
913
Jamesb5d9e082017-11-08 14:18:59 +0000914.. data:: ABOVE_NORMAL_PRIORITY_CLASS
915
916 A :class:`Popen` ``creationflags`` parameter to specify that a new process
917 will have an above average priority.
918
919 .. versionadded:: 3.7
920
921.. data:: BELOW_NORMAL_PRIORITY_CLASS
922
923 A :class:`Popen` ``creationflags`` parameter to specify that a new process
924 will have a below average priority.
925
926 .. versionadded:: 3.7
927
928.. data:: HIGH_PRIORITY_CLASS
929
930 A :class:`Popen` ``creationflags`` parameter to specify that a new process
931 will have a high priority.
932
933 .. versionadded:: 3.7
934
935.. data:: IDLE_PRIORITY_CLASS
936
937 A :class:`Popen` ``creationflags`` parameter to specify that a new process
938 will have an idle (lowest) priority.
939
940 .. versionadded:: 3.7
941
942.. data:: NORMAL_PRIORITY_CLASS
943
944 A :class:`Popen` ``creationflags`` parameter to specify that a new process
945 will have an normal priority. (default)
946
947 .. versionadded:: 3.7
948
949.. data:: REALTIME_PRIORITY_CLASS
950
951 A :class:`Popen` ``creationflags`` parameter to specify that a new process
952 will have realtime priority.
953 You should almost never use REALTIME_PRIORITY_CLASS, because this interrupts
954 system threads that manage mouse input, keyboard input, and background disk
955 flushing. This class can be appropriate for applications that "talk" directly
956 to hardware or that perform brief tasks that should have limited interruptions.
957
958 .. versionadded:: 3.7
959
960.. data:: CREATE_NO_WINDOW
961
962 A :class:`Popen` ``creationflags`` parameter to specify that a new process
963 will not create a window
964
965 .. versionadded:: 3.7
966
967.. data:: DETACHED_PROCESS
968
969 A :class:`Popen` ``creationflags`` parameter to specify that a new process
970 will not inherit its parent's console.
971 This value cannot be used with CREATE_NEW_CONSOLE.
972
973 .. versionadded:: 3.7
974
975.. data:: CREATE_DEFAULT_ERROR_MODE
976
977 A :class:`Popen` ``creationflags`` parameter to specify that a new process
978 does not inherit the error mode of the calling process. Instead, the new
979 process gets the default error mode.
980 This feature is particularly useful for multithreaded shell applications
981 that run with hard errors disabled.
982
983 .. versionadded:: 3.7
984
985.. data:: CREATE_BREAKAWAY_FROM_JOB
986
987 A :class:`Popen` ``creationflags`` parameter to specify that a new process
988 is not associated with the job.
989
990 .. versionadded:: 3.7
991
Gregory P. Smith6e730002015-04-14 16:14:25 -0700992.. _call-function-trio:
993
994Older high-level API
995--------------------
996
997Prior to Python 3.5, these three functions comprised the high level API to
998subprocess. You can now use :func:`run` in many cases, but lots of existing code
999calls these functions.
1000
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001001.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001002
1003 Run the command described by *args*. Wait for command to complete, then
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001004 return the :attr:`~Popen.returncode` attribute.
Gregory P. Smith6e730002015-04-14 16:14:25 -07001005
1006 This is equivalent to::
1007
1008 run(...).returncode
1009
1010 (except that the *input* and *check* parameters are not supported)
1011
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001012 The arguments shown above are merely the most
1013 common ones. The full function signature is largely the
1014 same as that of the :class:`Popen` constructor - this function passes all
1015 supplied arguments other than *timeout* directly through to that interface.
1016
Gregory P. Smith6e730002015-04-14 16:14:25 -07001017 .. note::
1018
1019 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1020 function. The child process will block if it generates enough
1021 output to a pipe to fill up the OS pipe buffer as the pipes are
1022 not being read from.
1023
1024 .. versionchanged:: 3.3
1025 *timeout* was added.
1026
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001027.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001028
1029 Run command with arguments. Wait for command to complete. If the return
1030 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
1031 :exc:`CalledProcessError` object will have the return code in the
1032 :attr:`~CalledProcessError.returncode` attribute.
1033
1034 This is equivalent to::
1035
1036 run(..., check=True)
1037
1038 (except that the *input* parameter is not supported)
1039
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001040 The arguments shown above are merely the most
1041 common ones. The full function signature is largely the
1042 same as that of the :class:`Popen` constructor - this function passes all
1043 supplied arguments other than *timeout* directly through to that interface.
1044
Gregory P. Smith6e730002015-04-14 16:14:25 -07001045 .. note::
1046
1047 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1048 function. The child process will block if it generates enough
1049 output to a pipe to fill up the OS pipe buffer as the pipes are
1050 not being read from.
1051
1052 .. versionchanged:: 3.3
1053 *timeout* was added.
1054
1055
Steve Dower050acae2016-09-06 20:16:17 -07001056.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, \
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001057 cwd=None, encoding=None, errors=None, \
Steve Dower050acae2016-09-06 20:16:17 -07001058 universal_newlines=False, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001059
1060 Run command with arguments and return its output.
1061
1062 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
1063 :exc:`CalledProcessError` object will have the return code in the
1064 :attr:`~CalledProcessError.returncode` attribute and any output in the
1065 :attr:`~CalledProcessError.output` attribute.
1066
1067 This is equivalent to::
1068
1069 run(..., check=True, stdout=PIPE).stdout
1070
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001071 The arguments shown above are merely the most common ones.
1072 The full function signature is largely the same as that of :func:`run` -
1073 most arguments are passed directly through to that interface.
1074 However, explicitly passing ``input=None`` to inherit the parent's
1075 standard input file handle is not supported.
1076
Gregory P. Smith6e730002015-04-14 16:14:25 -07001077 By default, this function will return the data as encoded bytes. The actual
1078 encoding of the output data may depend on the command being invoked, so the
1079 decoding to text will often need to be handled at the application level.
1080
1081 This behaviour may be overridden by setting *universal_newlines* to
1082 ``True`` as described above in :ref:`frequently-used-arguments`.
1083
1084 To also capture standard error in the result, use
1085 ``stderr=subprocess.STDOUT``::
1086
1087 >>> subprocess.check_output(
1088 ... "ls non_existent_file; exit 0",
1089 ... stderr=subprocess.STDOUT,
1090 ... shell=True)
1091 'ls: non_existent_file: No such file or directory\n'
1092
1093 .. versionadded:: 3.1
1094
1095 .. versionchanged:: 3.3
1096 *timeout* was added.
1097
1098 .. versionchanged:: 3.4
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001099 Support for the *input* keyword argument was added.
Brian Curtine6242d72011-04-29 22:17:51 -05001100
Brice Grosfc1ce812018-02-07 01:46:29 +01001101 .. versionchanged:: 3.6
1102 *encoding* and *errors* were added. See :func:`run` for details.
1103
Benjamin Petersondcf97b92008-07-02 17:30:14 +00001104.. _subprocess-replacements:
1105
Ezio Melotti402f75d2012-11-08 10:07:10 +02001106Replacing Older Functions with the :mod:`subprocess` Module
1107-----------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00001108
Nick Coghlanc29248f2011-11-08 20:49:23 +10001109In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +00001110
1111.. note::
1112
Nick Coghlanc29248f2011-11-08 20:49:23 +10001113 All "a" functions in this section fail (more or less) silently if the
1114 executed program cannot be found; the "b" replacements raise :exc:`OSError`
1115 instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001116
Nick Coghlanc29248f2011-11-08 20:49:23 +10001117 In addition, the replacements using :func:`check_output` will fail with a
1118 :exc:`CalledProcessError` if the requested operation produces a non-zero
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +03001119 return code. The output is still available as the
1120 :attr:`~CalledProcessError.output` attribute of the raised exception.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001121
1122In the following examples, we assume that the relevant functions have already
Ezio Melotti402f75d2012-11-08 10:07:10 +02001123been imported from the :mod:`subprocess` module.
Georg Brandl116aa622007-08-15 14:28:22 +00001124
1125
1126Replacing /bin/sh shell backquote
1127^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1128
Martin Panter1050d2d2016-07-26 11:18:21 +02001129.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001130
1131 output=`mycmd myarg`
Georg Brandl116aa622007-08-15 14:28:22 +00001132
Martin Panter1050d2d2016-07-26 11:18:21 +02001133becomes::
1134
1135 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +00001136
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001137Replacing shell pipeline
1138^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001139
Martin Panter1050d2d2016-07-26 11:18:21 +02001140.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001141
1142 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001143
1144becomes::
1145
Georg Brandl116aa622007-08-15 14:28:22 +00001146 p1 = Popen(["dmesg"], stdout=PIPE)
1147 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001148 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +00001149 output = p2.communicate()[0]
1150
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001151The p1.stdout.close() call after starting the p2 is important in order for p1
1152to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +00001153
Nick Coghlanc29248f2011-11-08 20:49:23 +10001154Alternatively, for trusted input, the shell's own pipeline support may still
Martin Panter1050d2d2016-07-26 11:18:21 +02001155be used directly:
1156
1157.. code-block:: bash
Nick Coghlanc29248f2011-11-08 20:49:23 +10001158
1159 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001160
1161becomes::
1162
Nick Coghlanc29248f2011-11-08 20:49:23 +10001163 output=check_output("dmesg | grep hda", shell=True)
1164
1165
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001166Replacing :func:`os.system`
1167^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001168
1169::
1170
1171 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +10001172 # becomes
1173 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001174
1175Notes:
1176
1177* Calling the program through the shell is usually not required.
1178
Georg Brandl116aa622007-08-15 14:28:22 +00001179A more realistic example would look like this::
1180
1181 try:
1182 retcode = call("mycmd" + " myarg", shell=True)
1183 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +00001184 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001185 else:
Collin Winterc79461b2007-09-01 23:34:30 +00001186 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001187 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +00001188 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001189
1190
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001191Replacing the :func:`os.spawn <os.spawnl>` family
1192^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001193
1194P_NOWAIT example::
1195
1196 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
1197 ==>
1198 pid = Popen(["/bin/mycmd", "myarg"]).pid
1199
1200P_WAIT example::
1201
1202 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
1203 ==>
1204 retcode = call(["/bin/mycmd", "myarg"])
1205
1206Vector example::
1207
1208 os.spawnvp(os.P_NOWAIT, path, args)
1209 ==>
1210 Popen([path] + args[1:])
1211
1212Environment example::
1213
1214 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
1215 ==>
1216 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
1217
1218
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001219
1220Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
1221^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001222
1223::
1224
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001225 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001226 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001227 p = Popen(cmd, shell=True, bufsize=bufsize,
1228 stdin=PIPE, stdout=PIPE, close_fds=True)
1229 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +00001230
1231::
1232
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001233 (child_stdin,
1234 child_stdout,
1235 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001236 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001237 p = Popen(cmd, shell=True, bufsize=bufsize,
1238 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
1239 (child_stdin,
1240 child_stdout,
1241 child_stderr) = (p.stdin, p.stdout, p.stderr)
1242
1243::
1244
1245 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
1246 ==>
1247 p = Popen(cmd, shell=True, bufsize=bufsize,
1248 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
1249 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
1250
1251Return code handling translates as follows::
1252
1253 pipe = os.popen(cmd, 'w')
1254 ...
1255 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +00001256 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001257 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001258 ==>
R David Murray17227a72015-09-04 10:01:19 -04001259 process = Popen(cmd, stdin=PIPE)
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001260 ...
1261 process.stdin.close()
1262 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001263 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001264
1265
1266Replacing functions from the :mod:`popen2` module
1267^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1268
1269.. note::
1270
1271 If the cmd argument to popen2 functions is a string, the command is executed
1272 through /bin/sh. If it is a list, the command is directly executed.
1273
1274::
1275
1276 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
1277 ==>
R David Murrayae9d1932014-05-14 10:09:52 -04001278 p = Popen("somestring", shell=True, bufsize=bufsize,
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001279 stdin=PIPE, stdout=PIPE, close_fds=True)
1280 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1281
1282::
1283
1284 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
1285 ==>
1286 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
1287 stdin=PIPE, stdout=PIPE, close_fds=True)
1288 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1289
1290:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
1291:class:`subprocess.Popen`, except that:
1292
1293* :class:`Popen` raises an exception if the execution fails.
1294
1295* the *capturestderr* argument is replaced with the *stderr* argument.
1296
1297* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
1298
1299* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +00001300 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
1301 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +03001302
Nick Coghlanc29248f2011-11-08 20:49:23 +10001303
Nick Coghlanc29248f2011-11-08 20:49:23 +10001304Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001305---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001306
1307This module also provides the following legacy functions from the 2.x
1308``commands`` module. These operations implicitly invoke the system shell and
1309none of the guarantees described above regarding security and exception
1310handling consistency are valid for these functions.
1311
1312.. function:: getstatusoutput(cmd)
1313
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001314 Return ``(exitcode, output)`` of executing *cmd* in a shell.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001315
Tim Golden60798142013-11-05 12:57:25 +00001316 Execute the string *cmd* in a shell with :meth:`Popen.check_output` and
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001317 return a 2-tuple ``(exitcode, output)``. The locale encoding is used;
Tim Golden60798142013-11-05 12:57:25 +00001318 see the notes on :ref:`frequently-used-arguments` for more details.
Tim Golden3a2abb52013-11-03 18:24:50 +00001319
1320 A trailing newline is stripped from the output.
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001321 The exit code for the command can be interpreted as the return code
1322 of subprocess. Example::
Nick Coghlanc29248f2011-11-08 20:49:23 +10001323
1324 >>> subprocess.getstatusoutput('ls /bin/ls')
1325 (0, '/bin/ls')
1326 >>> subprocess.getstatusoutput('cat /bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001327 (1, 'cat: /bin/junk: No such file or directory')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001328 >>> subprocess.getstatusoutput('/bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001329 (127, 'sh: /bin/junk: not found')
1330 >>> subprocess.getstatusoutput('/bin/kill $$')
1331 (-15, '')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001332
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001333 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001334
1335 .. versionchanged:: 3.3.4
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001336 Windows support was added.
1337
1338 The function now returns (exitcode, output) instead of (status, output)
Xiang Zhang7d161722018-09-22 04:18:20 +08001339 as it did in Python 3.3.3 and earlier. exitcode has the same value as
1340 :attr:`~Popen.returncode`.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001341
1342
1343.. function:: getoutput(cmd)
1344
1345 Return output (stdout and stderr) of executing *cmd* in a shell.
1346
Xiang Zhang7d161722018-09-22 04:18:20 +08001347 Like :func:`getstatusoutput`, except the exit code is ignored and the return
Nick Coghlanc29248f2011-11-08 20:49:23 +10001348 value is a string containing the command's output. Example::
1349
1350 >>> subprocess.getoutput('ls /bin/ls')
1351 '/bin/ls'
1352
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001353 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001354
1355 .. versionchanged:: 3.3.4
1356 Windows support added
Nick Coghlanc29248f2011-11-08 20:49:23 +10001357
Nick Coghlan32e4a582011-11-08 21:50:58 +10001358
Eli Bendersky046a7642011-04-15 07:23:26 +03001359Notes
1360-----
1361
1362.. _converting-argument-sequence:
1363
1364Converting an argument sequence to a string on Windows
1365^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1366
1367On Windows, an *args* sequence is converted to a string that can be parsed
1368using the following rules (which correspond to the rules used by the MS C
1369runtime):
1370
13711. Arguments are delimited by white space, which is either a
1372 space or a tab.
1373
13742. A string surrounded by double quotation marks is
1375 interpreted as a single argument, regardless of white space
1376 contained within. A quoted string can be embedded in an
1377 argument.
1378
13793. A double quotation mark preceded by a backslash is
1380 interpreted as a literal double quotation mark.
1381
13824. Backslashes are interpreted literally, unless they
1383 immediately precede a double quotation mark.
1384
13855. If backslashes immediately precede a double quotation mark,
1386 every pair of backslashes is interpreted as a literal
1387 backslash. If the number of backslashes is odd, the last
1388 backslash escapes the next double quotation mark as
1389 described in rule 3.
1390
Eli Benderskyd2112312011-04-15 07:26:28 +03001391
Éric Araujo9bce3112011-07-27 18:29:31 +02001392.. seealso::
1393
1394 :mod:`shlex`
1395 Module which provides function to parse and escape command lines.