blob: a22afe041850bb3075d9d528f6406f07ec4cd76c [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,\
Alex Gaynor368cf1d2017-05-25 22:28:17 -040041 shell=False, cwd=None, timeout=None, check=False, \
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -080042 encoding=None, errors=None, text=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
Nick Coghlanc29248f2011-11-08 20:49:23 +100081 Examples::
82
Gregory P. Smith6e730002015-04-14 16:14:25 -070083 >>> subprocess.run(["ls", "-l"]) # doesn't capture output
84 CompletedProcess(args=['ls', '-l'], returncode=0)
Nick Coghlanc29248f2011-11-08 20:49:23 +100085
Gregory P. Smith6e730002015-04-14 16:14:25 -070086 >>> subprocess.run("exit 1", shell=True, check=True)
Nick Coghlanc29248f2011-11-08 20:49:23 +100087 Traceback (most recent call last):
Gregory P. Smith6e730002015-04-14 16:14:25 -070088 ...
Nick Coghlanc29248f2011-11-08 20:49:23 +100089 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
90
Bo Baylesce0f33d2018-01-30 00:40:39 -060091 >>> subprocess.run(["ls", "-l", "/dev/null"], capture_output=True)
Gregory P. Smith6e730002015-04-14 16:14:25 -070092 CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
Bo Baylesce0f33d2018-01-30 00:40:39 -060093 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 +100094
Gregory P. Smith6e730002015-04-14 16:14:25 -070095 .. versionadded:: 3.5
Nick Coghlanc29248f2011-11-08 20:49:23 +100096
Steve Dower050acae2016-09-06 20:16:17 -070097 .. versionchanged:: 3.6
98
99 Added *encoding* and *errors* parameters
100
andyclegg7fed7bd2017-10-23 03:01:19 +0100101 .. versionchanged:: 3.7
102
Bo Baylesce0f33d2018-01-30 00:40:39 -0600103 Added the *text* parameter, as a more understandable alias of *universal_newlines*.
104 Added the *capture_output* parameter.
andyclegg7fed7bd2017-10-23 03:01:19 +0100105
Gregory P. Smith6e730002015-04-14 16:14:25 -0700106.. class:: CompletedProcess
Nick Coghlanc29248f2011-11-08 20:49:23 +1000107
Gregory P. Smith6e730002015-04-14 16:14:25 -0700108 The return value from :func:`run`, representing a process that has finished.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000109
Gregory P. Smith6e730002015-04-14 16:14:25 -0700110 .. attribute:: args
Nick Coghlanc29248f2011-11-08 20:49:23 +1000111
Gregory P. Smith6e730002015-04-14 16:14:25 -0700112 The arguments used to launch the process. This may be a list or a string.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000113
Gregory P. Smith6e730002015-04-14 16:14:25 -0700114 .. attribute:: returncode
Serhiy Storchakafcd9f222013-04-22 20:20:54 +0300115
Gregory P. Smith6e730002015-04-14 16:14:25 -0700116 Exit status of the child process. Typically, an exit status of 0 indicates
117 that it ran successfully.
Nick Coghlan217f05b2011-11-08 22:11:21 +1000118
Gregory P. Smith6e730002015-04-14 16:14:25 -0700119 A negative value ``-N`` indicates that the child was terminated by signal
120 ``N`` (POSIX only).
121
122 .. attribute:: stdout
123
124 Captured stdout from the child process. A bytes sequence, or a string if
andyclegg7fed7bd2017-10-23 03:01:19 +0100125 :func:`run` was called with an encoding, errors, or text=True.
126 ``None`` if stdout was not captured.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700127
128 If you ran the process with ``stderr=subprocess.STDOUT``, stdout and
129 stderr will be combined in this attribute, and :attr:`stderr` will be
Serhiy Storchakaecf41da2016-10-19 16:29:26 +0300130 ``None``.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700131
132 .. attribute:: stderr
133
134 Captured stderr from the child process. A bytes sequence, or a string if
andyclegg7fed7bd2017-10-23 03:01:19 +0100135 :func:`run` was called with an encoding, errors, or text=True.
136 ``None`` if stderr was not captured.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700137
138 .. method:: check_returncode()
139
140 If :attr:`returncode` is non-zero, raise a :exc:`CalledProcessError`.
141
142 .. versionadded:: 3.5
Nick Coghlan217f05b2011-11-08 22:11:21 +1000143
144.. data:: DEVNULL
145
146 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
147 to :class:`Popen` and indicates that the special file :data:`os.devnull`
148 will be used.
149
150 .. versionadded:: 3.3
151
Nick Coghlanc29248f2011-11-08 20:49:23 +1000152
153.. data:: PIPE
154
155 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
156 to :class:`Popen` and indicates that a pipe to the standard stream should be
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700157 opened. Most useful with :meth:`Popen.communicate`.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000158
159
160.. data:: STDOUT
161
162 Special value that can be used as the *stderr* argument to :class:`Popen` and
163 indicates that standard error should go into the same handle as standard
164 output.
165
166
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300167.. exception:: SubprocessError
168
169 Base class for all other exceptions from this module.
170
171 .. versionadded:: 3.3
172
173
174.. exception:: TimeoutExpired
175
176 Subclass of :exc:`SubprocessError`, raised when a timeout expires
177 while waiting for a child process.
178
179 .. attribute:: cmd
180
181 Command that was used to spawn the child process.
182
183 .. attribute:: timeout
184
185 Timeout in seconds.
186
187 .. attribute:: output
188
Gregory P. Smith6e730002015-04-14 16:14:25 -0700189 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300190 :func:`check_output`. Otherwise, ``None``.
191
Gregory P. Smith6e730002015-04-14 16:14:25 -0700192 .. attribute:: stdout
193
194 Alias for output, for symmetry with :attr:`stderr`.
195
196 .. attribute:: stderr
197
198 Stderr output of the child process if it was captured by :func:`run`.
199 Otherwise, ``None``.
200
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300201 .. versionadded:: 3.3
202
Gregory P. Smith6e730002015-04-14 16:14:25 -0700203 .. versionchanged:: 3.5
204 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300205
206.. exception:: CalledProcessError
207
208 Subclass of :exc:`SubprocessError`, raised when a process run by
209 :func:`check_call` or :func:`check_output` returns a non-zero exit status.
210
211 .. attribute:: returncode
212
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)583a1d62016-06-03 00:31:21 +0000213 Exit status of the child process. If the process exited due to a
214 signal, this will be the negative signal number.
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300215
216 .. attribute:: cmd
217
218 Command that was used to spawn the child process.
219
220 .. attribute:: output
221
Gregory P. Smith6e730002015-04-14 16:14:25 -0700222 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300223 :func:`check_output`. Otherwise, ``None``.
224
Gregory P. Smith6e730002015-04-14 16:14:25 -0700225 .. attribute:: stdout
226
227 Alias for output, for symmetry with :attr:`stderr`.
228
229 .. attribute:: stderr
230
231 Stderr output of the child process if it was captured by :func:`run`.
232 Otherwise, ``None``.
233
234 .. versionchanged:: 3.5
235 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300236
237
Nick Coghlanc29248f2011-11-08 20:49:23 +1000238.. _frequently-used-arguments:
239
240Frequently Used Arguments
241^^^^^^^^^^^^^^^^^^^^^^^^^
242
243To support a wide variety of use cases, the :class:`Popen` constructor (and
244the convenience functions) accept a large number of optional arguments. For
245most typical use cases, many of these arguments can be safely left at their
246default values. The arguments that are most commonly needed are:
247
248 *args* is required for all calls and should be a string, or a sequence of
249 program arguments. Providing a sequence of arguments is generally
250 preferred, as it allows the module to take care of any required escaping
251 and quoting of arguments (e.g. to permit spaces in file names). If passing
252 a single string, either *shell* must be :const:`True` (see below) or else
253 the string must simply name the program to be executed without specifying
254 any arguments.
255
256 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
257 standard output and standard error file handles, respectively. Valid values
Nick Coghlan217f05b2011-11-08 22:11:21 +1000258 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
259 integer), an existing file object, and ``None``. :data:`PIPE` indicates
260 that a new pipe to the child should be created. :data:`DEVNULL` indicates
261 that the special file :data:`os.devnull` will be used. With the default
262 settings of ``None``, no redirection will occur; the child's file handles
263 will be inherited from the parent. Additionally, *stderr* can be
264 :data:`STDOUT`, which indicates that the stderr data from the child
265 process should be captured into the same file handle as for *stdout*.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000266
R David Murray1b00f252012-08-15 10:43:58 -0400267 .. index::
268 single: universal newlines; subprocess module
269
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -0800270 If *encoding* or *errors* are specified, or *text* (also known as
271 *universal_newlines*) is true,
Steve Dower050acae2016-09-06 20:16:17 -0700272 the file objects *stdin*, *stdout* and *stderr* will be opened in text
273 mode using the *encoding* and *errors* specified in the call or the
274 defaults for :class:`io.TextIOWrapper`.
Ronald Oussoren385521c2013-07-07 09:26:45 +0200275
Steve Dower050acae2016-09-06 20:16:17 -0700276 For *stdin*, line ending characters ``'\n'`` in the input will be converted
277 to the default line separator :data:`os.linesep`. For *stdout* and *stderr*,
278 all line endings in the output will be converted to ``'\n'``. For more
279 information see the documentation of the :class:`io.TextIOWrapper` class
280 when the *newline* argument to its constructor is ``None``.
281
282 If text mode is not used, *stdin*, *stdout* and *stderr* will be opened as
283 binary streams. No encoding or line ending conversion is performed.
284
285 .. versionadded:: 3.6
286 Added *encoding* and *errors* parameters.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000287
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -0800288 .. versionadded:: 3.7
289 Added the *text* parameter as an alias for *universal_newlines*.
290
Andrew Svetlov50be4522012-08-13 22:09:04 +0300291 .. note::
292
Gregory P. Smith1f8a40b2013-03-20 18:32:03 -0700293 The newlines attribute of the file objects :attr:`Popen.stdin`,
294 :attr:`Popen.stdout` and :attr:`Popen.stderr` are not updated by
295 the :meth:`Popen.communicate` method.
Andrew Svetlov50be4522012-08-13 22:09:04 +0300296
297 If *shell* is ``True``, the specified command will be executed through
Ezio Melotti186d5232012-09-15 08:34:08 +0300298 the shell. This can be useful if you are using Python primarily for the
Nick Coghlanc29248f2011-11-08 20:49:23 +1000299 enhanced control flow it offers over most system shells and still want
Ezio Melotti186d5232012-09-15 08:34:08 +0300300 convenient access to other shell features such as shell pipes, filename
301 wildcards, environment variable expansion, and expansion of ``~`` to a
302 user's home directory. However, note that Python itself offers
303 implementations of many shell-like features (in particular, :mod:`glob`,
304 :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
305 :func:`os.path.expanduser`, and :mod:`shutil`).
Nick Coghlanc29248f2011-11-08 20:49:23 +1000306
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300307 .. versionchanged:: 3.3
308 When *universal_newlines* is ``True``, the class uses the encoding
309 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
310 instead of ``locale.getpreferredencoding()``. See the
311 :class:`io.TextIOWrapper` class for more information on this change.
312
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700313 .. note::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000314
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700315 Read the `Security Considerations`_ section before using ``shell=True``.
Andrew Svetlovc2415eb2012-10-28 11:42:26 +0200316
Nick Coghlanc29248f2011-11-08 20:49:23 +1000317These options, along with all of the other options, are described in more
318detail in the :class:`Popen` constructor documentation.
319
320
Sandro Tosi1526ad12011-12-25 11:27:37 +0100321Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100322^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000323
324The underlying process creation and management in this module is handled by
325the :class:`Popen` class. It offers a lot of flexibility so that developers
326are able to handle the less common cases not covered by the convenience
327functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000328
329
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700330.. class:: Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, \
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700331 stderr=None, preexec_fn=None, close_fds=True, shell=False, \
332 cwd=None, env=None, universal_newlines=False, \
333 startupinfo=None, creationflags=0, restore_signals=True, \
Steve Dower050acae2016-09-06 20:16:17 -0700334 start_new_session=False, pass_fds=(), *, \
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -0800335 encoding=None, errors=None, text=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000336
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700337 Execute a child program in a new process. On POSIX, the class uses
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700338 :meth:`os.execvp`-like behavior to execute the child program. On Windows,
339 the class uses the Windows ``CreateProcess()`` function. The arguments to
340 :class:`Popen` are as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000341
Anders Lorentsendd42cb72018-01-30 08:27:28 +0100342 *args* should be a sequence of program arguments or else a single string or
343 :term:`path-like object`. By default, the program to execute is the first
344 item in *args* if *args* is a sequence. If *args* is a string, the
345 interpretation is platform-dependent and described below. See the *shell*
346 and *executable* arguments for additional differences from the default
347 behavior. Unless otherwise stated, it is recommended to pass *args* as a sequence.
Georg Brandl116aa622007-08-15 14:28:22 +0000348
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700349 On POSIX, if *args* is a string, the string is interpreted as the name or
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700350 path of the program to execute. However, this can only be done if not
351 passing arguments to the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000352
R. David Murray5973e4d2010-02-04 16:41:57 +0000353 .. note::
354
355 :meth:`shlex.split` can be useful when determining the correct
356 tokenization for *args*, especially in complex cases::
357
358 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000359 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000360 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
361 >>> args = shlex.split(command_line)
362 >>> print(args)
363 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
364 >>> p = subprocess.Popen(args) # Success!
365
366 Note in particular that options (such as *-input*) and arguments (such
367 as *eggs.txt*) that are separated by whitespace in the shell go in separate
368 list elements, while arguments that need quoting or backslash escaping when
369 used in the shell (such as filenames containing spaces or the *echo* command
370 shown above) are single list elements.
371
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700372 On Windows, if *args* is a sequence, it will be converted to a string in a
373 manner described in :ref:`converting-argument-sequence`. This is because
374 the underlying ``CreateProcess()`` operates on strings.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700375
Serhiy Storchakaa97cd2e2016-10-19 16:43:42 +0300376 The *shell* argument (which defaults to ``False``) specifies whether to use
377 the shell as the program to execute. If *shell* is ``True``, it is
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700378 recommended to pass *args* as a string rather than as a sequence.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700379
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700380 On POSIX with ``shell=True``, the shell defaults to :file:`/bin/sh`. If
Chris Jerdonek470ee392012-10-08 23:06:57 -0700381 *args* is a string, the string specifies the command
382 to execute through the shell. This means that the string must be
R. David Murray5973e4d2010-02-04 16:41:57 +0000383 formatted exactly as it would be when typed at the shell prompt. This
384 includes, for example, quoting or backslash escaping filenames with spaces in
385 them. If *args* is a sequence, the first item specifies the command string, and
386 any additional items will be treated as additional arguments to the shell
Chris Jerdonek470ee392012-10-08 23:06:57 -0700387 itself. That is to say, :class:`Popen` does the equivalent of::
R. David Murray5973e4d2010-02-04 16:41:57 +0000388
389 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000390
Chris Jerdonek470ee392012-10-08 23:06:57 -0700391 On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
392 specifies the default shell. The only time you need to specify
393 ``shell=True`` on Windows is when the command you wish to execute is built
394 into the shell (e.g. :command:`dir` or :command:`copy`). You do not need
395 ``shell=True`` to run a batch file or console-based executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000396
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700397 .. note::
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700398
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700399 Read the `Security Considerations`_ section before using ``shell=True``.
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700400
Antoine Pitrouafe8d062014-09-21 21:10:56 +0200401 *bufsize* will be supplied as the corresponding argument to the
402 :func:`open` function when creating the stdin/stdout/stderr pipe
403 file objects:
404
405 - :const:`0` means unbuffered (read and write are one
406 system call and can return short)
407 - :const:`1` means line buffered
408 (only usable if ``universal_newlines=True`` i.e., in a text mode)
409 - any other positive value means use a buffer of approximately that
410 size
411 - negative bufsize (the default) means the system default of
412 io.DEFAULT_BUFFER_SIZE will be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000413
Georg Brandl37b70bb2013-11-25 08:48:37 +0100414 .. versionchanged:: 3.3.1
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700415 *bufsize* now defaults to -1 to enable buffering by default to match the
Georg Brandl37b70bb2013-11-25 08:48:37 +0100416 behavior that most code expects. In versions prior to Python 3.2.4 and
417 3.3.1 it incorrectly defaulted to :const:`0` which was unbuffered
418 and allowed short reads. This was unintentional and did not match the
419 behavior of Python 2 as most code expected.
Antoine Pitrou4b876202010-06-02 17:10:49 +0000420
Chris Jerdonek470ee392012-10-08 23:06:57 -0700421 The *executable* argument specifies a replacement program to execute. It
422 is very seldom needed. When ``shell=False``, *executable* replaces the
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700423 program to execute specified by *args*. However, the original *args* is
424 still passed to the program. Most programs treat the program specified
425 by *args* as the command name, which can then be different from the program
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700426 actually executed. On POSIX, the *args* name
Chris Jerdonek470ee392012-10-08 23:06:57 -0700427 becomes the display name for the executable in utilities such as
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700428 :program:`ps`. If ``shell=True``, on POSIX the *executable* argument
Chris Jerdonek470ee392012-10-08 23:06:57 -0700429 specifies a replacement shell for the default :file:`/bin/sh`.
Georg Brandl116aa622007-08-15 14:28:22 +0000430
Nick Coghlanc29248f2011-11-08 20:49:23 +1000431 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000432 standard output and standard error file handles, respectively. Valid values
Ross Lagerwallba102ec2011-03-16 18:40:25 +0200433 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
434 integer), an existing :term:`file object`, and ``None``. :data:`PIPE`
435 indicates that a new pipe to the child should be created. :data:`DEVNULL`
Nick Coghlan217f05b2011-11-08 22:11:21 +1000436 indicates that the special file :data:`os.devnull` will be used. With the
437 default settings of ``None``, no redirection will occur; the child's file
438 handles will be inherited from the parent. Additionally, *stderr* can be
439 :data:`STDOUT`, which indicates that the stderr data from the applications
440 should be captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000441
442 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000443 child process just before the child is executed.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700444 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000445
446 .. warning::
447
448 The *preexec_fn* parameter is not safe to use in the presence of threads
449 in your application. The child process could deadlock before exec is
450 called.
451 If you must use it, keep it trivial! Minimize the number of libraries
452 you call into.
453
454 .. note::
455
456 If you need to modify the environment for the child use the *env*
457 parameter rather than doing it in a *preexec_fn*.
458 The *start_new_session* parameter can take the place of a previously
459 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
Segev Finerb2a60832017-12-18 11:28:19 +0200462 :const:`2` will be closed before the child process is executed.
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000463 On Windows, if *close_fds* is true then no handles will be inherited by the
Segev Finerb2a60832017-12-18 11:28:19 +0200464 child process unless explicitly passed in the ``handle_list`` element of
465 :attr:`STARTUPINFO.lpAttributeList`, or by standard handle redirection.
Georg Brandl116aa622007-08-15 14:28:22 +0000466
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000467 .. versionchanged:: 3.2
468 The default for *close_fds* was changed from :const:`False` to
469 what is described above.
470
Segev Finerb2a60832017-12-18 11:28:19 +0200471 .. versionchanged:: 3.7
472 On Windows the default for *close_fds* was changed from :const:`False` to
473 :const:`True` when redirecting the standard handles. It's now possible to
474 set *close_fds* to :const:`True` when redirecting the standard handles.
475
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000476 *pass_fds* is an optional sequence of file descriptors to keep open
477 between the parent and child. Providing any *pass_fds* forces
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700478 *close_fds* to be :const:`True`. (POSIX only)
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000479
480 .. versionadded:: 3.2
481 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000482
Chris Jerdonekec3ea942012-09-30 00:10:28 -0700483 If *cwd* is not ``None``, the function changes the working directory to
Sayan Chowdhuryd5c11f72017-02-26 22:36:10 +0530484 *cwd* before executing the child. *cwd* can be a :class:`str` and
485 :term:`path-like <path-like object>` object. In particular, the function
486 looks for *executable* (or for the first item in *args*) relative to *cwd*
487 if the executable path is a relative path.
488
489 .. versionchanged:: 3.6
490 *cwd* parameter accepts a :term:`path-like object`.
Georg Brandl116aa622007-08-15 14:28:22 +0000491
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200492 If *restore_signals* is true (the default) all signals that Python has set to
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000493 SIG_IGN are restored to SIG_DFL in the child process before the exec.
494 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700495 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000496
497 .. versionchanged:: 3.2
498 *restore_signals* was added.
499
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200500 If *start_new_session* is true the setsid() system call will be made in the
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700501 child process prior to the execution of the subprocess. (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000502
503 .. versionchanged:: 3.2
504 *start_new_session* was added.
505
Christian Heimesa342c012008-04-20 21:01:16 +0000506 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000507 variables for the new process; these are used instead of the default
508 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000509
R. David Murray1055e892009-04-16 18:15:32 +0000510 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000511
Georg Brandl2708f3a2009-12-20 14:38:23 +0000512 If specified, *env* must provide any variables required for the program to
513 execute. On Windows, in order to run a `side-by-side assembly`_ the
514 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000515
Georg Brandl5d941342016-02-26 19:37:12 +0100516 .. _side-by-side assembly: https://en.wikipedia.org/wiki/Side-by-Side_Assembly
R. David Murray1055e892009-04-16 18:15:32 +0000517
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -0800518 If *encoding* or *errors* are specified, or *text* is true, the file objects
519 *stdin*, *stdout* and *stderr* are opened in text mode with the specified
520 encoding and *errors*, as described above in :ref:`frequently-used-arguments`.
521 The *universal_newlines* argument is equivalent to *text* and is provided
522 for backwards compatibility. By default, file objects are opened in binary mode.
Steve Dower050acae2016-09-06 20:16:17 -0700523
524 .. versionadded:: 3.6
525 *encoding* and *errors* were added.
Georg Brandl116aa622007-08-15 14:28:22 +0000526
Miss Islington (bot)ba4f2182018-02-11 15:21:02 -0800527 .. versionadded:: 3.7
528 *text* was added as a more readable alias for *universal_newlines*.
529
Brian Curtine6242d72011-04-29 22:17:51 -0500530 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
531 passed to the underlying ``CreateProcess`` function.
Jamesb5d9e082017-11-08 14:18:59 +0000532 *creationflags*, if given, can be one or more of the following flags:
533
534 * :data:`CREATE_NEW_CONSOLE`
535 * :data:`CREATE_NEW_PROCESS_GROUP`
536 * :data:`ABOVE_NORMAL_PRIORITY_CLASS`
537 * :data:`BELOW_NORMAL_PRIORITY_CLASS`
538 * :data:`HIGH_PRIORITY_CLASS`
539 * :data:`IDLE_PRIORITY_CLASS`
540 * :data:`NORMAL_PRIORITY_CLASS`
541 * :data:`REALTIME_PRIORITY_CLASS`
542 * :data:`CREATE_NO_WINDOW`
543 * :data:`DETACHED_PROCESS`
544 * :data:`CREATE_DEFAULT_ERROR_MODE`
545 * :data:`CREATE_BREAKAWAY_FROM_JOB`
Georg Brandl116aa622007-08-15 14:28:22 +0000546
Gregory P. Smith6b657452011-05-11 21:42:08 -0700547 Popen objects are supported as context managers via the :keyword:`with` statement:
548 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000549 ::
550
551 with Popen(["ifconfig"], stdout=PIPE) as proc:
552 log.write(proc.stdout.read())
553
554 .. versionchanged:: 3.2
555 Added context manager support.
556
Victor Stinner5a48e212016-05-20 12:11:15 +0200557 .. versionchanged:: 3.6
558 Popen destructor now emits a :exc:`ResourceWarning` warning if the child
559 process is still running.
560
Anders Lorentsendd42cb72018-01-30 08:27:28 +0100561 .. versionchanged:: 3.7
562 *args*, or the first element of *args* if *args* is a sequence, can now
563 be a :term:`path-like object`.
564
Georg Brandl116aa622007-08-15 14:28:22 +0000565
Georg Brandl116aa622007-08-15 14:28:22 +0000566Exceptions
567^^^^^^^^^^
568
569Exceptions raised in the child process, before the new program has started to
570execute, will be re-raised in the parent. Additionally, the exception object
571will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000572containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000573
574The most common exception raised is :exc:`OSError`. This occurs, for example,
575when trying to execute a non-existent file. Applications should prepare for
576:exc:`OSError` exceptions.
577
578A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
579arguments.
580
Nick Coghlanc29248f2011-11-08 20:49:23 +1000581:func:`check_call` and :func:`check_output` will raise
582:exc:`CalledProcessError` if the called process returns a non-zero return
583code.
Georg Brandl116aa622007-08-15 14:28:22 +0000584
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400585All of the functions and methods that accept a *timeout* parameter, such as
586:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
587the timeout expires before the process exits.
588
Ronald Oussorenc1577902011-03-16 10:03:10 -0400589Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400590
591 .. versionadded:: 3.3
592 The :exc:`SubprocessError` base class was added.
593
Georg Brandl116aa622007-08-15 14:28:22 +0000594
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700595Security Considerations
596-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000597
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700598Unlike some other popen functions, this implementation will never
599implicitly call a system shell. This means that all characters,
600including shell metacharacters, can safely be passed to child processes.
601If the shell is invoked explicitly, via ``shell=True``, it is the application's
602responsibility to ensure that all whitespace and metacharacters are
603quoted appropriately to avoid
Georg Brandl5d941342016-02-26 19:37:12 +0100604`shell injection <https://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700605vulnerabilities.
606
607When using ``shell=True``, the :func:`shlex.quote` function can be
608used to properly escape whitespace and shell metacharacters in strings
609that are going to be used to construct shell commands.
Georg Brandl116aa622007-08-15 14:28:22 +0000610
611
612Popen Objects
613-------------
614
615Instances of the :class:`Popen` class have the following methods:
616
617
618.. method:: Popen.poll()
619
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300620 Check if child process has terminated. Set and return
Ivan Chernoff006617f2017-08-29 17:46:24 +0300621 :attr:`~Popen.returncode` attribute. Otherwise, returns ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000622
623
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400624.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000625
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300626 Wait for child process to terminate. Set and return
627 :attr:`~Popen.returncode` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000628
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400629 If the process does not terminate after *timeout* seconds, raise a
630 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
631 retry the wait.
632
Victor Stinner07171242014-02-24 13:18:47 +0100633 .. note::
634
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700635 This will deadlock when using ``stdout=PIPE`` or ``stderr=PIPE``
636 and the child process generates enough output to a pipe such that
637 it blocks waiting for the OS pipe buffer to accept more data.
638 Use :meth:`Popen.communicate` when using pipes to avoid that.
639
640 .. note::
641
Victor Stinner07171242014-02-24 13:18:47 +0100642 The function is implemented using a busy loop (non-blocking call and
643 short sleeps). Use the :mod:`asyncio` module for an asynchronous wait:
644 see :class:`asyncio.create_subprocess_exec`.
645
Reid Kleckner28f13032011-03-14 12:36:53 -0400646 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400647 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000648
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400649.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000650
651 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400652 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700653 *input* argument should be data to be sent to the child process, or
Steve Dower050acae2016-09-06 20:16:17 -0700654 ``None``, if no data should be sent to the child. If streams were opened in
655 text mode, *input* must be a string. Otherwise, it must be bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000656
Victor Stinner39892052014-10-14 00:52:07 +0200657 :meth:`communicate` returns a tuple ``(stdout_data, stderr_data)``.
Steve Dower050acae2016-09-06 20:16:17 -0700658 The data will be strings if streams were opened in text mode; otherwise,
659 bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000660
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000661 Note that if you want to send data to the process's stdin, you need to create
662 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
663 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
664 ``stderr=PIPE`` too.
665
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400666 If the process does not terminate after *timeout* seconds, a
667 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
668 retrying communication will not lose any output.
669
670 The child process is not killed if the timeout expires, so in order to
671 cleanup properly a well-behaved application should kill the child process and
672 finish communication::
673
674 proc = subprocess.Popen(...)
675 try:
676 outs, errs = proc.communicate(timeout=15)
677 except TimeoutExpired:
678 proc.kill()
679 outs, errs = proc.communicate()
680
Christian Heimes7f044312008-01-06 17:05:40 +0000681 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000682
Christian Heimes7f044312008-01-06 17:05:40 +0000683 The data read is buffered in memory, so do not use this method if the data
684 size is large or unlimited.
685
Reid Kleckner28f13032011-03-14 12:36:53 -0400686 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400687 *timeout* was added.
688
Georg Brandl116aa622007-08-15 14:28:22 +0000689
Christian Heimesa342c012008-04-20 21:01:16 +0000690.. method:: Popen.send_signal(signal)
691
692 Sends the signal *signal* to the child.
693
694 .. note::
695
Brian Curtineb24d742010-04-12 17:16:38 +0000696 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000697 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000698 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000699
Christian Heimesa342c012008-04-20 21:01:16 +0000700
701.. method:: Popen.terminate()
702
703 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000704 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000705 to stop the child.
706
Christian Heimesa342c012008-04-20 21:01:16 +0000707
708.. method:: Popen.kill()
709
710 Kills the child. On Posix OSs the function sends SIGKILL to the child.
711 On Windows :meth:`kill` is an alias for :meth:`terminate`.
712
Christian Heimesa342c012008-04-20 21:01:16 +0000713
Georg Brandl116aa622007-08-15 14:28:22 +0000714The following attributes are also available:
715
Gregory P. Smith024c5ee2014-04-29 11:33:23 -0700716.. attribute:: Popen.args
717
718 The *args* argument as it was passed to :class:`Popen` -- a
719 sequence of program arguments or else a single string.
720
721 .. versionadded:: 3.3
Georg Brandl734e2682008-08-12 08:18:18 +0000722
Georg Brandl116aa622007-08-15 14:28:22 +0000723.. attribute:: Popen.stdin
724
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500725 If the *stdin* argument was :data:`PIPE`, this attribute is a writeable
Steve Dower050acae2016-09-06 20:16:17 -0700726 stream object as returned by :func:`open`. If the *encoding* or *errors*
727 arguments were specified or the *universal_newlines* argument was ``True``,
728 the stream is a text stream, otherwise it is a byte stream. If the *stdin*
729 argument was not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000730
731
732.. attribute:: Popen.stdout
733
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500734 If the *stdout* argument was :data:`PIPE`, this attribute is a readable
735 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700736 output from the child process. If the *encoding* or *errors* arguments were
737 specified or the *universal_newlines* argument was ``True``, the stream is a
738 text stream, otherwise it is a byte stream. If the *stdout* argument was not
739 :data:`PIPE`, this attribute is ``None``.
Benjamin Petersonaf69fe22014-01-18 00:49:04 -0500740
Georg Brandl116aa622007-08-15 14:28:22 +0000741
742.. attribute:: Popen.stderr
743
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500744 If the *stderr* argument was :data:`PIPE`, this attribute is a readable
745 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700746 error output from the child process. If the *encoding* or *errors* arguments
747 were specified or the *universal_newlines* argument was ``True``, the stream
748 is a text stream, otherwise it is a byte stream. If the *stderr* argument was
749 not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000750
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700751.. warning::
752
753 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
754 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
755 deadlocks due to any of the other OS pipe buffers filling up and blocking the
756 child process.
757
Georg Brandl116aa622007-08-15 14:28:22 +0000758
759.. attribute:: Popen.pid
760
761 The process ID of the child process.
762
Georg Brandl58bfdca2010-03-21 09:50:49 +0000763 Note that if you set the *shell* argument to ``True``, this is the process ID
764 of the spawned shell.
765
Georg Brandl116aa622007-08-15 14:28:22 +0000766
767.. attribute:: Popen.returncode
768
Christian Heimes7f044312008-01-06 17:05:40 +0000769 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
770 by :meth:`communicate`). A ``None`` value indicates that the process
771 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000772
Christian Heimes7f044312008-01-06 17:05:40 +0000773 A negative value ``-N`` indicates that the child was terminated by signal
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700774 ``N`` (POSIX only).
Georg Brandl116aa622007-08-15 14:28:22 +0000775
776
Brian Curtine6242d72011-04-29 22:17:51 -0500777Windows Popen Helpers
778---------------------
779
780The :class:`STARTUPINFO` class and following constants are only available
781on Windows.
782
Berker Peksagf5184742017-03-01 12:51:55 +0300783.. class:: STARTUPINFO(*, dwFlags=0, hStdInput=None, hStdOutput=None, \
Segev Finerb2a60832017-12-18 11:28:19 +0200784 hStdError=None, wShowWindow=0, lpAttributeList=None)
Brian Curtin73365dd2011-04-29 22:18:33 -0500785
Brian Curtine6242d72011-04-29 22:17:51 -0500786 Partial support of the Windows
Georg Brandl5d941342016-02-26 19:37:12 +0100787 `STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
Berker Peksagf5184742017-03-01 12:51:55 +0300788 structure is used for :class:`Popen` creation. The following attributes can
789 be set by passing them as keyword-only arguments.
790
791 .. versionchanged:: 3.7
792 Keyword-only argument support was added.
Brian Curtine6242d72011-04-29 22:17:51 -0500793
794 .. attribute:: dwFlags
795
Senthil Kumarana6bac952011-07-04 11:28:30 -0700796 A bit field that determines whether certain :class:`STARTUPINFO`
797 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500798
799 si = subprocess.STARTUPINFO()
800 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
801
802 .. attribute:: hStdInput
803
Senthil Kumarana6bac952011-07-04 11:28:30 -0700804 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
805 is the standard input handle for the process. If
806 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
807 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500808
809 .. attribute:: hStdOutput
810
Senthil Kumarana6bac952011-07-04 11:28:30 -0700811 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
812 is the standard output handle for the process. Otherwise, this attribute
813 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500814 buffer.
815
816 .. attribute:: hStdError
817
Senthil Kumarana6bac952011-07-04 11:28:30 -0700818 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
819 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500820 ignored and the default for standard error is the console window's buffer.
821
822 .. attribute:: wShowWindow
823
Senthil Kumarana6bac952011-07-04 11:28:30 -0700824 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500825 can be any of the values that can be specified in the ``nCmdShow``
826 parameter for the
Georg Brandl5d941342016-02-26 19:37:12 +0100827 `ShowWindow <https://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700828 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500829 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500830
Brian Curtine6242d72011-04-29 22:17:51 -0500831 :data:`SW_HIDE` is provided for this attribute. It is used when
832 :class:`Popen` is called with ``shell=True``.
833
Segev Finerb2a60832017-12-18 11:28:19 +0200834 .. attribute:: lpAttributeList
835
836 A dictionary of additional attributes for process creation as given in
837 ``STARTUPINFOEX``, see
838 `UpdateProcThreadAttribute <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686880(v=vs.85).aspx>`__.
839
840 Supported attributes:
841
842 **handle_list**
843 Sequence of handles that will be inherited. *close_fds* must be true if
844 non-empty.
845
846 The handles must be temporarily made inheritable by
847 :func:`os.set_handle_inheritable` when passed to the :class:`Popen`
848 constructor, else :class:`OSError` will be raised with Windows error
849 ``ERROR_INVALID_PARAMETER`` (87).
850
851 .. warning::
852
853 In a multithreaded process, use caution to avoid leaking handles
854 that are marked inheritable when combining this feature with
855 concurrent calls to other process creation functions that inherit
856 all handles such as :func:`os.system`. This also applies to
857 standard handle redirection, which temporarily creates inheritable
858 handles.
859
860 .. versionadded:: 3.7
Brian Curtine6242d72011-04-29 22:17:51 -0500861
Jamesb5d9e082017-11-08 14:18:59 +0000862Windows Constants
863^^^^^^^^^^^^^^^^^
Brian Curtine6242d72011-04-29 22:17:51 -0500864
865The :mod:`subprocess` module exposes the following constants.
866
867.. data:: STD_INPUT_HANDLE
868
869 The standard input device. Initially, this is the console input buffer,
870 ``CONIN$``.
871
872.. data:: STD_OUTPUT_HANDLE
873
874 The standard output device. Initially, this is the active console screen
875 buffer, ``CONOUT$``.
876
877.. data:: STD_ERROR_HANDLE
878
879 The standard error device. Initially, this is the active console screen
880 buffer, ``CONOUT$``.
881
882.. data:: SW_HIDE
883
884 Hides the window. Another window will be activated.
885
886.. data:: STARTF_USESTDHANDLES
887
888 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700889 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500890 contain additional information.
891
892.. data:: STARTF_USESHOWWINDOW
893
Senthil Kumarana6bac952011-07-04 11:28:30 -0700894 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500895 additional information.
896
897.. data:: CREATE_NEW_CONSOLE
898
899 The new process has a new console, instead of inheriting its parent's
900 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500901
Brian Curtin30401932011-04-29 22:20:57 -0500902.. data:: CREATE_NEW_PROCESS_GROUP
903
904 A :class:`Popen` ``creationflags`` parameter to specify that a new process
905 group will be created. This flag is necessary for using :func:`os.kill`
906 on the subprocess.
907
908 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
909
Jamesb5d9e082017-11-08 14:18:59 +0000910.. data:: ABOVE_NORMAL_PRIORITY_CLASS
911
912 A :class:`Popen` ``creationflags`` parameter to specify that a new process
913 will have an above average priority.
914
915 .. versionadded:: 3.7
916
917.. data:: BELOW_NORMAL_PRIORITY_CLASS
918
919 A :class:`Popen` ``creationflags`` parameter to specify that a new process
920 will have a below average priority.
921
922 .. versionadded:: 3.7
923
924.. data:: HIGH_PRIORITY_CLASS
925
926 A :class:`Popen` ``creationflags`` parameter to specify that a new process
927 will have a high priority.
928
929 .. versionadded:: 3.7
930
931.. data:: IDLE_PRIORITY_CLASS
932
933 A :class:`Popen` ``creationflags`` parameter to specify that a new process
934 will have an idle (lowest) priority.
935
936 .. versionadded:: 3.7
937
938.. data:: NORMAL_PRIORITY_CLASS
939
940 A :class:`Popen` ``creationflags`` parameter to specify that a new process
941 will have an normal priority. (default)
942
943 .. versionadded:: 3.7
944
945.. data:: REALTIME_PRIORITY_CLASS
946
947 A :class:`Popen` ``creationflags`` parameter to specify that a new process
948 will have realtime priority.
949 You should almost never use REALTIME_PRIORITY_CLASS, because this interrupts
950 system threads that manage mouse input, keyboard input, and background disk
951 flushing. This class can be appropriate for applications that "talk" directly
952 to hardware or that perform brief tasks that should have limited interruptions.
953
954 .. versionadded:: 3.7
955
956.. data:: CREATE_NO_WINDOW
957
958 A :class:`Popen` ``creationflags`` parameter to specify that a new process
959 will not create a window
960
961 .. versionadded:: 3.7
962
963.. data:: DETACHED_PROCESS
964
965 A :class:`Popen` ``creationflags`` parameter to specify that a new process
966 will not inherit its parent's console.
967 This value cannot be used with CREATE_NEW_CONSOLE.
968
969 .. versionadded:: 3.7
970
971.. data:: CREATE_DEFAULT_ERROR_MODE
972
973 A :class:`Popen` ``creationflags`` parameter to specify that a new process
974 does not inherit the error mode of the calling process. Instead, the new
975 process gets the default error mode.
976 This feature is particularly useful for multithreaded shell applications
977 that run with hard errors disabled.
978
979 .. versionadded:: 3.7
980
981.. data:: CREATE_BREAKAWAY_FROM_JOB
982
983 A :class:`Popen` ``creationflags`` parameter to specify that a new process
984 is not associated with the job.
985
986 .. versionadded:: 3.7
987
Gregory P. Smith6e730002015-04-14 16:14:25 -0700988.. _call-function-trio:
989
990Older high-level API
991--------------------
992
993Prior to Python 3.5, these three functions comprised the high level API to
994subprocess. You can now use :func:`run` in many cases, but lots of existing code
995calls these functions.
996
Alex Gaynor368cf1d2017-05-25 22:28:17 -0400997.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -0700998
999 Run the command described by *args*. Wait for command to complete, then
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001000 return the :attr:`~Popen.returncode` attribute.
Gregory P. Smith6e730002015-04-14 16:14:25 -07001001
1002 This is equivalent to::
1003
1004 run(...).returncode
1005
1006 (except that the *input* and *check* parameters are not supported)
1007
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001008 The arguments shown above are merely the most
1009 common ones. The full function signature is largely the
1010 same as that of the :class:`Popen` constructor - this function passes all
1011 supplied arguments other than *timeout* directly through to that interface.
1012
Gregory P. Smith6e730002015-04-14 16:14:25 -07001013 .. note::
1014
1015 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1016 function. The child process will block if it generates enough
1017 output to a pipe to fill up the OS pipe buffer as the pipes are
1018 not being read from.
1019
1020 .. versionchanged:: 3.3
1021 *timeout* was added.
1022
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001023.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001024
1025 Run command with arguments. Wait for command to complete. If the return
1026 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
1027 :exc:`CalledProcessError` object will have the return code in the
1028 :attr:`~CalledProcessError.returncode` attribute.
1029
1030 This is equivalent to::
1031
1032 run(..., check=True)
1033
1034 (except that the *input* parameter is not supported)
1035
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001036 The arguments shown above are merely the most
1037 common ones. The full function signature is largely the
1038 same as that of the :class:`Popen` constructor - this function passes all
1039 supplied arguments other than *timeout* directly through to that interface.
1040
Gregory P. Smith6e730002015-04-14 16:14:25 -07001041 .. note::
1042
1043 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1044 function. The child process will block if it generates enough
1045 output to a pipe to fill up the OS pipe buffer as the pipes are
1046 not being read from.
1047
1048 .. versionchanged:: 3.3
1049 *timeout* was added.
1050
1051
Steve Dower050acae2016-09-06 20:16:17 -07001052.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, \
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001053 cwd=None, encoding=None, errors=None, \
Steve Dower050acae2016-09-06 20:16:17 -07001054 universal_newlines=False, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001055
1056 Run command with arguments and return its output.
1057
1058 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
1059 :exc:`CalledProcessError` object will have the return code in the
1060 :attr:`~CalledProcessError.returncode` attribute and any output in the
1061 :attr:`~CalledProcessError.output` attribute.
1062
1063 This is equivalent to::
1064
1065 run(..., check=True, stdout=PIPE).stdout
1066
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001067 The arguments shown above are merely the most common ones.
1068 The full function signature is largely the same as that of :func:`run` -
1069 most arguments are passed directly through to that interface.
1070 However, explicitly passing ``input=None`` to inherit the parent's
1071 standard input file handle is not supported.
1072
Gregory P. Smith6e730002015-04-14 16:14:25 -07001073 By default, this function will return the data as encoded bytes. The actual
1074 encoding of the output data may depend on the command being invoked, so the
1075 decoding to text will often need to be handled at the application level.
1076
1077 This behaviour may be overridden by setting *universal_newlines* to
1078 ``True`` as described above in :ref:`frequently-used-arguments`.
1079
1080 To also capture standard error in the result, use
1081 ``stderr=subprocess.STDOUT``::
1082
1083 >>> subprocess.check_output(
1084 ... "ls non_existent_file; exit 0",
1085 ... stderr=subprocess.STDOUT,
1086 ... shell=True)
1087 'ls: non_existent_file: No such file or directory\n'
1088
1089 .. versionadded:: 3.1
1090
1091 .. versionchanged:: 3.3
1092 *timeout* was added.
1093
1094 .. versionchanged:: 3.4
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001095 Support for the *input* keyword argument was added.
Brian Curtine6242d72011-04-29 22:17:51 -05001096
Miss Islington (bot)4e7a9642018-02-06 17:12:06 -08001097 .. versionchanged:: 3.6
1098 *encoding* and *errors* were added. See :func:`run` for details.
1099
Benjamin Petersondcf97b92008-07-02 17:30:14 +00001100.. _subprocess-replacements:
1101
Ezio Melotti402f75d2012-11-08 10:07:10 +02001102Replacing Older Functions with the :mod:`subprocess` Module
1103-----------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00001104
Nick Coghlanc29248f2011-11-08 20:49:23 +10001105In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +00001106
1107.. note::
1108
Nick Coghlanc29248f2011-11-08 20:49:23 +10001109 All "a" functions in this section fail (more or less) silently if the
1110 executed program cannot be found; the "b" replacements raise :exc:`OSError`
1111 instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001112
Nick Coghlanc29248f2011-11-08 20:49:23 +10001113 In addition, the replacements using :func:`check_output` will fail with a
1114 :exc:`CalledProcessError` if the requested operation produces a non-zero
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +03001115 return code. The output is still available as the
1116 :attr:`~CalledProcessError.output` attribute of the raised exception.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001117
1118In the following examples, we assume that the relevant functions have already
Ezio Melotti402f75d2012-11-08 10:07:10 +02001119been imported from the :mod:`subprocess` module.
Georg Brandl116aa622007-08-15 14:28:22 +00001120
1121
1122Replacing /bin/sh shell backquote
1123^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1124
Martin Panter1050d2d2016-07-26 11:18:21 +02001125.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001126
1127 output=`mycmd myarg`
Georg Brandl116aa622007-08-15 14:28:22 +00001128
Martin Panter1050d2d2016-07-26 11:18:21 +02001129becomes::
1130
1131 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +00001132
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001133Replacing shell pipeline
1134^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001135
Martin Panter1050d2d2016-07-26 11:18:21 +02001136.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001137
1138 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001139
1140becomes::
1141
Georg Brandl116aa622007-08-15 14:28:22 +00001142 p1 = Popen(["dmesg"], stdout=PIPE)
1143 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001144 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +00001145 output = p2.communicate()[0]
1146
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001147The p1.stdout.close() call after starting the p2 is important in order for p1
1148to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +00001149
Nick Coghlanc29248f2011-11-08 20:49:23 +10001150Alternatively, for trusted input, the shell's own pipeline support may still
Martin Panter1050d2d2016-07-26 11:18:21 +02001151be used directly:
1152
1153.. code-block:: bash
Nick Coghlanc29248f2011-11-08 20:49:23 +10001154
1155 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001156
1157becomes::
1158
Nick Coghlanc29248f2011-11-08 20:49:23 +10001159 output=check_output("dmesg | grep hda", shell=True)
1160
1161
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001162Replacing :func:`os.system`
1163^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001164
1165::
1166
1167 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +10001168 # becomes
1169 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001170
1171Notes:
1172
1173* Calling the program through the shell is usually not required.
1174
Georg Brandl116aa622007-08-15 14:28:22 +00001175A more realistic example would look like this::
1176
1177 try:
1178 retcode = call("mycmd" + " myarg", shell=True)
1179 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +00001180 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001181 else:
Collin Winterc79461b2007-09-01 23:34:30 +00001182 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001183 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +00001184 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001185
1186
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001187Replacing the :func:`os.spawn <os.spawnl>` family
1188^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001189
1190P_NOWAIT example::
1191
1192 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
1193 ==>
1194 pid = Popen(["/bin/mycmd", "myarg"]).pid
1195
1196P_WAIT example::
1197
1198 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
1199 ==>
1200 retcode = call(["/bin/mycmd", "myarg"])
1201
1202Vector example::
1203
1204 os.spawnvp(os.P_NOWAIT, path, args)
1205 ==>
1206 Popen([path] + args[1:])
1207
1208Environment example::
1209
1210 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
1211 ==>
1212 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
1213
1214
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001215
1216Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
1217^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001218
1219::
1220
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001221 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001222 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001223 p = Popen(cmd, shell=True, bufsize=bufsize,
1224 stdin=PIPE, stdout=PIPE, close_fds=True)
1225 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +00001226
1227::
1228
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001229 (child_stdin,
1230 child_stdout,
1231 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001232 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001233 p = Popen(cmd, shell=True, bufsize=bufsize,
1234 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
1235 (child_stdin,
1236 child_stdout,
1237 child_stderr) = (p.stdin, p.stdout, p.stderr)
1238
1239::
1240
1241 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
1242 ==>
1243 p = Popen(cmd, shell=True, bufsize=bufsize,
1244 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
1245 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
1246
1247Return code handling translates as follows::
1248
1249 pipe = os.popen(cmd, 'w')
1250 ...
1251 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +00001252 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001253 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001254 ==>
R David Murray17227a72015-09-04 10:01:19 -04001255 process = Popen(cmd, stdin=PIPE)
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001256 ...
1257 process.stdin.close()
1258 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001259 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001260
1261
1262Replacing functions from the :mod:`popen2` module
1263^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1264
1265.. note::
1266
1267 If the cmd argument to popen2 functions is a string, the command is executed
1268 through /bin/sh. If it is a list, the command is directly executed.
1269
1270::
1271
1272 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
1273 ==>
R David Murrayae9d1932014-05-14 10:09:52 -04001274 p = Popen("somestring", shell=True, bufsize=bufsize,
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001275 stdin=PIPE, stdout=PIPE, close_fds=True)
1276 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1277
1278::
1279
1280 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
1281 ==>
1282 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
1283 stdin=PIPE, stdout=PIPE, close_fds=True)
1284 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1285
1286:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
1287:class:`subprocess.Popen`, except that:
1288
1289* :class:`Popen` raises an exception if the execution fails.
1290
1291* the *capturestderr* argument is replaced with the *stderr* argument.
1292
1293* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
1294
1295* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +00001296 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
1297 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +03001298
Nick Coghlanc29248f2011-11-08 20:49:23 +10001299
Nick Coghlanc29248f2011-11-08 20:49:23 +10001300Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001301---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001302
1303This module also provides the following legacy functions from the 2.x
1304``commands`` module. These operations implicitly invoke the system shell and
1305none of the guarantees described above regarding security and exception
1306handling consistency are valid for these functions.
1307
1308.. function:: getstatusoutput(cmd)
1309
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001310 Return ``(exitcode, output)`` of executing *cmd* in a shell.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001311
Tim Golden60798142013-11-05 12:57:25 +00001312 Execute the string *cmd* in a shell with :meth:`Popen.check_output` and
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001313 return a 2-tuple ``(exitcode, output)``. The locale encoding is used;
Tim Golden60798142013-11-05 12:57:25 +00001314 see the notes on :ref:`frequently-used-arguments` for more details.
Tim Golden3a2abb52013-11-03 18:24:50 +00001315
1316 A trailing newline is stripped from the output.
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001317 The exit code for the command can be interpreted as the return code
1318 of subprocess. Example::
Nick Coghlanc29248f2011-11-08 20:49:23 +10001319
1320 >>> subprocess.getstatusoutput('ls /bin/ls')
1321 (0, '/bin/ls')
1322 >>> subprocess.getstatusoutput('cat /bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001323 (1, 'cat: /bin/junk: No such file or directory')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001324 >>> subprocess.getstatusoutput('/bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001325 (127, 'sh: /bin/junk: not found')
1326 >>> subprocess.getstatusoutput('/bin/kill $$')
1327 (-15, '')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001328
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001329 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001330
1331 .. versionchanged:: 3.3.4
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001332 Windows support was added.
1333
1334 The function now returns (exitcode, output) instead of (status, output)
1335 as it did in Python 3.3.3 and earlier. See :func:`WEXITSTATUS`.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001336
1337
1338.. function:: getoutput(cmd)
1339
1340 Return output (stdout and stderr) of executing *cmd* in a shell.
1341
1342 Like :func:`getstatusoutput`, except the exit status is ignored and the return
1343 value is a string containing the command's output. Example::
1344
1345 >>> subprocess.getoutput('ls /bin/ls')
1346 '/bin/ls'
1347
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001348 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001349
1350 .. versionchanged:: 3.3.4
1351 Windows support added
Nick Coghlanc29248f2011-11-08 20:49:23 +10001352
Nick Coghlan32e4a582011-11-08 21:50:58 +10001353
Eli Bendersky046a7642011-04-15 07:23:26 +03001354Notes
1355-----
1356
1357.. _converting-argument-sequence:
1358
1359Converting an argument sequence to a string on Windows
1360^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1361
1362On Windows, an *args* sequence is converted to a string that can be parsed
1363using the following rules (which correspond to the rules used by the MS C
1364runtime):
1365
13661. Arguments are delimited by white space, which is either a
1367 space or a tab.
1368
13692. A string surrounded by double quotation marks is
1370 interpreted as a single argument, regardless of white space
1371 contained within. A quoted string can be embedded in an
1372 argument.
1373
13743. A double quotation mark preceded by a backslash is
1375 interpreted as a literal double quotation mark.
1376
13774. Backslashes are interpreted literally, unless they
1378 immediately precede a double quotation mark.
1379
13805. If backslashes immediately precede a double quotation mark,
1381 every pair of backslashes is interpreted as a literal
1382 backslash. If the number of backslashes is odd, the last
1383 backslash escapes the next double quotation mark as
1384 described in rule 3.
1385
Eli Benderskyd2112312011-04-15 07:26:28 +03001386
Éric Araujo9bce3112011-07-27 18:29:31 +02001387.. seealso::
1388
1389 :mod:`shlex`
1390 Module which provides function to parse and escape command lines.