blob: db7a88af6bea0890ba31e73cba87b49aa0956146 [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
Miss Islington (bot)b7dcae32018-02-27 15:30:30 -0800342 *args* should be a sequence of program arguments or else a single string.
343 By default, the program to execute is the first item in *args* if *args* is
344 a sequence. If *args* is a string, the interpretation is
345 platform-dependent and described below. See the *shell* and *executable*
346 arguments for additional differences from the default behavior. Unless
347 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
Georg Brandl116aa622007-08-15 14:28:22 +0000561
Georg Brandl116aa622007-08-15 14:28:22 +0000562Exceptions
563^^^^^^^^^^
564
565Exceptions raised in the child process, before the new program has started to
566execute, will be re-raised in the parent. Additionally, the exception object
567will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000568containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000569
570The most common exception raised is :exc:`OSError`. This occurs, for example,
571when trying to execute a non-existent file. Applications should prepare for
572:exc:`OSError` exceptions.
573
574A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
575arguments.
576
Nick Coghlanc29248f2011-11-08 20:49:23 +1000577:func:`check_call` and :func:`check_output` will raise
578:exc:`CalledProcessError` if the called process returns a non-zero return
579code.
Georg Brandl116aa622007-08-15 14:28:22 +0000580
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400581All of the functions and methods that accept a *timeout* parameter, such as
582:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
583the timeout expires before the process exits.
584
Ronald Oussorenc1577902011-03-16 10:03:10 -0400585Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400586
587 .. versionadded:: 3.3
588 The :exc:`SubprocessError` base class was added.
589
Georg Brandl116aa622007-08-15 14:28:22 +0000590
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700591Security Considerations
592-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000593
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700594Unlike some other popen functions, this implementation will never
595implicitly call a system shell. This means that all characters,
596including shell metacharacters, can safely be passed to child processes.
597If the shell is invoked explicitly, via ``shell=True``, it is the application's
598responsibility to ensure that all whitespace and metacharacters are
599quoted appropriately to avoid
Georg Brandl5d941342016-02-26 19:37:12 +0100600`shell injection <https://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700601vulnerabilities.
602
603When using ``shell=True``, the :func:`shlex.quote` function can be
604used to properly escape whitespace and shell metacharacters in strings
605that are going to be used to construct shell commands.
Georg Brandl116aa622007-08-15 14:28:22 +0000606
607
608Popen Objects
609-------------
610
611Instances of the :class:`Popen` class have the following methods:
612
613
614.. method:: Popen.poll()
615
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300616 Check if child process has terminated. Set and return
Ivan Chernoff006617f2017-08-29 17:46:24 +0300617 :attr:`~Popen.returncode` attribute. Otherwise, returns ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000618
619
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400620.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000621
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300622 Wait for child process to terminate. Set and return
623 :attr:`~Popen.returncode` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000624
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400625 If the process does not terminate after *timeout* seconds, raise a
626 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
627 retry the wait.
628
Victor Stinner07171242014-02-24 13:18:47 +0100629 .. note::
630
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700631 This will deadlock when using ``stdout=PIPE`` or ``stderr=PIPE``
632 and the child process generates enough output to a pipe such that
633 it blocks waiting for the OS pipe buffer to accept more data.
634 Use :meth:`Popen.communicate` when using pipes to avoid that.
635
636 .. note::
637
Victor Stinner07171242014-02-24 13:18:47 +0100638 The function is implemented using a busy loop (non-blocking call and
639 short sleeps). Use the :mod:`asyncio` module for an asynchronous wait:
640 see :class:`asyncio.create_subprocess_exec`.
641
Reid Kleckner28f13032011-03-14 12:36:53 -0400642 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400643 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000644
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400645.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000646
647 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400648 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700649 *input* argument should be data to be sent to the child process, or
Steve Dower050acae2016-09-06 20:16:17 -0700650 ``None``, if no data should be sent to the child. If streams were opened in
651 text mode, *input* must be a string. Otherwise, it must be bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Victor Stinner39892052014-10-14 00:52:07 +0200653 :meth:`communicate` returns a tuple ``(stdout_data, stderr_data)``.
Steve Dower050acae2016-09-06 20:16:17 -0700654 The data will be strings if streams were opened in text mode; otherwise,
655 bytes.
Georg Brandl116aa622007-08-15 14:28:22 +0000656
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000657 Note that if you want to send data to the process's stdin, you need to create
658 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
659 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
660 ``stderr=PIPE`` too.
661
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400662 If the process does not terminate after *timeout* seconds, a
663 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
664 retrying communication will not lose any output.
665
666 The child process is not killed if the timeout expires, so in order to
667 cleanup properly a well-behaved application should kill the child process and
668 finish communication::
669
670 proc = subprocess.Popen(...)
671 try:
672 outs, errs = proc.communicate(timeout=15)
673 except TimeoutExpired:
674 proc.kill()
675 outs, errs = proc.communicate()
676
Christian Heimes7f044312008-01-06 17:05:40 +0000677 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000678
Christian Heimes7f044312008-01-06 17:05:40 +0000679 The data read is buffered in memory, so do not use this method if the data
680 size is large or unlimited.
681
Reid Kleckner28f13032011-03-14 12:36:53 -0400682 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400683 *timeout* was added.
684
Georg Brandl116aa622007-08-15 14:28:22 +0000685
Christian Heimesa342c012008-04-20 21:01:16 +0000686.. method:: Popen.send_signal(signal)
687
688 Sends the signal *signal* to the child.
689
690 .. note::
691
Brian Curtineb24d742010-04-12 17:16:38 +0000692 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000693 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000694 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000695
Christian Heimesa342c012008-04-20 21:01:16 +0000696
697.. method:: Popen.terminate()
698
699 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000700 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000701 to stop the child.
702
Christian Heimesa342c012008-04-20 21:01:16 +0000703
704.. method:: Popen.kill()
705
706 Kills the child. On Posix OSs the function sends SIGKILL to the child.
707 On Windows :meth:`kill` is an alias for :meth:`terminate`.
708
Christian Heimesa342c012008-04-20 21:01:16 +0000709
Georg Brandl116aa622007-08-15 14:28:22 +0000710The following attributes are also available:
711
Gregory P. Smith024c5ee2014-04-29 11:33:23 -0700712.. attribute:: Popen.args
713
714 The *args* argument as it was passed to :class:`Popen` -- a
715 sequence of program arguments or else a single string.
716
717 .. versionadded:: 3.3
Georg Brandl734e2682008-08-12 08:18:18 +0000718
Georg Brandl116aa622007-08-15 14:28:22 +0000719.. attribute:: Popen.stdin
720
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500721 If the *stdin* argument was :data:`PIPE`, this attribute is a writeable
Steve Dower050acae2016-09-06 20:16:17 -0700722 stream object as returned by :func:`open`. If the *encoding* or *errors*
723 arguments were specified or the *universal_newlines* argument was ``True``,
724 the stream is a text stream, otherwise it is a byte stream. If the *stdin*
725 argument was not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000726
727
728.. attribute:: Popen.stdout
729
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500730 If the *stdout* argument was :data:`PIPE`, this attribute is a readable
731 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700732 output from the child process. If the *encoding* or *errors* arguments were
733 specified or the *universal_newlines* argument was ``True``, the stream is a
734 text stream, otherwise it is a byte stream. If the *stdout* argument was not
735 :data:`PIPE`, this attribute is ``None``.
Benjamin Petersonaf69fe22014-01-18 00:49:04 -0500736
Georg Brandl116aa622007-08-15 14:28:22 +0000737
738.. attribute:: Popen.stderr
739
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500740 If the *stderr* argument was :data:`PIPE`, this attribute is a readable
741 stream object as returned by :func:`open`. Reading from the stream provides
Steve Dower050acae2016-09-06 20:16:17 -0700742 error output from the child process. If the *encoding* or *errors* arguments
743 were specified or the *universal_newlines* argument was ``True``, the stream
744 is a text stream, otherwise it is a byte stream. If the *stderr* argument was
745 not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000746
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700747.. warning::
748
749 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
750 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
751 deadlocks due to any of the other OS pipe buffers filling up and blocking the
752 child process.
753
Georg Brandl116aa622007-08-15 14:28:22 +0000754
755.. attribute:: Popen.pid
756
757 The process ID of the child process.
758
Georg Brandl58bfdca2010-03-21 09:50:49 +0000759 Note that if you set the *shell* argument to ``True``, this is the process ID
760 of the spawned shell.
761
Georg Brandl116aa622007-08-15 14:28:22 +0000762
763.. attribute:: Popen.returncode
764
Christian Heimes7f044312008-01-06 17:05:40 +0000765 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
766 by :meth:`communicate`). A ``None`` value indicates that the process
767 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000768
Christian Heimes7f044312008-01-06 17:05:40 +0000769 A negative value ``-N`` indicates that the child was terminated by signal
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700770 ``N`` (POSIX only).
Georg Brandl116aa622007-08-15 14:28:22 +0000771
772
Brian Curtine6242d72011-04-29 22:17:51 -0500773Windows Popen Helpers
774---------------------
775
776The :class:`STARTUPINFO` class and following constants are only available
777on Windows.
778
Berker Peksagf5184742017-03-01 12:51:55 +0300779.. class:: STARTUPINFO(*, dwFlags=0, hStdInput=None, hStdOutput=None, \
Segev Finerb2a60832017-12-18 11:28:19 +0200780 hStdError=None, wShowWindow=0, lpAttributeList=None)
Brian Curtin73365dd2011-04-29 22:18:33 -0500781
Brian Curtine6242d72011-04-29 22:17:51 -0500782 Partial support of the Windows
Georg Brandl5d941342016-02-26 19:37:12 +0100783 `STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
Berker Peksagf5184742017-03-01 12:51:55 +0300784 structure is used for :class:`Popen` creation. The following attributes can
785 be set by passing them as keyword-only arguments.
786
787 .. versionchanged:: 3.7
788 Keyword-only argument support was added.
Brian Curtine6242d72011-04-29 22:17:51 -0500789
790 .. attribute:: dwFlags
791
Senthil Kumarana6bac952011-07-04 11:28:30 -0700792 A bit field that determines whether certain :class:`STARTUPINFO`
793 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500794
795 si = subprocess.STARTUPINFO()
796 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
797
798 .. attribute:: hStdInput
799
Senthil Kumarana6bac952011-07-04 11:28:30 -0700800 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
801 is the standard input handle for the process. If
802 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
803 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500804
805 .. attribute:: hStdOutput
806
Senthil Kumarana6bac952011-07-04 11:28:30 -0700807 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
808 is the standard output handle for the process. Otherwise, this attribute
809 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500810 buffer.
811
812 .. attribute:: hStdError
813
Senthil Kumarana6bac952011-07-04 11:28:30 -0700814 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
815 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500816 ignored and the default for standard error is the console window's buffer.
817
818 .. attribute:: wShowWindow
819
Senthil Kumarana6bac952011-07-04 11:28:30 -0700820 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500821 can be any of the values that can be specified in the ``nCmdShow``
822 parameter for the
Georg Brandl5d941342016-02-26 19:37:12 +0100823 `ShowWindow <https://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700824 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500825 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500826
Brian Curtine6242d72011-04-29 22:17:51 -0500827 :data:`SW_HIDE` is provided for this attribute. It is used when
828 :class:`Popen` is called with ``shell=True``.
829
Segev Finerb2a60832017-12-18 11:28:19 +0200830 .. attribute:: lpAttributeList
831
832 A dictionary of additional attributes for process creation as given in
833 ``STARTUPINFOEX``, see
834 `UpdateProcThreadAttribute <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686880(v=vs.85).aspx>`__.
835
836 Supported attributes:
837
838 **handle_list**
839 Sequence of handles that will be inherited. *close_fds* must be true if
840 non-empty.
841
842 The handles must be temporarily made inheritable by
843 :func:`os.set_handle_inheritable` when passed to the :class:`Popen`
844 constructor, else :class:`OSError` will be raised with Windows error
845 ``ERROR_INVALID_PARAMETER`` (87).
846
847 .. warning::
848
849 In a multithreaded process, use caution to avoid leaking handles
850 that are marked inheritable when combining this feature with
851 concurrent calls to other process creation functions that inherit
852 all handles such as :func:`os.system`. This also applies to
853 standard handle redirection, which temporarily creates inheritable
854 handles.
855
856 .. versionadded:: 3.7
Brian Curtine6242d72011-04-29 22:17:51 -0500857
Jamesb5d9e082017-11-08 14:18:59 +0000858Windows Constants
859^^^^^^^^^^^^^^^^^
Brian Curtine6242d72011-04-29 22:17:51 -0500860
861The :mod:`subprocess` module exposes the following constants.
862
863.. data:: STD_INPUT_HANDLE
864
865 The standard input device. Initially, this is the console input buffer,
866 ``CONIN$``.
867
868.. data:: STD_OUTPUT_HANDLE
869
870 The standard output device. Initially, this is the active console screen
871 buffer, ``CONOUT$``.
872
873.. data:: STD_ERROR_HANDLE
874
875 The standard error device. Initially, this is the active console screen
876 buffer, ``CONOUT$``.
877
878.. data:: SW_HIDE
879
880 Hides the window. Another window will be activated.
881
882.. data:: STARTF_USESTDHANDLES
883
884 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700885 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500886 contain additional information.
887
888.. data:: STARTF_USESHOWWINDOW
889
Senthil Kumarana6bac952011-07-04 11:28:30 -0700890 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500891 additional information.
892
893.. data:: CREATE_NEW_CONSOLE
894
895 The new process has a new console, instead of inheriting its parent's
896 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500897
Brian Curtin30401932011-04-29 22:20:57 -0500898.. data:: CREATE_NEW_PROCESS_GROUP
899
900 A :class:`Popen` ``creationflags`` parameter to specify that a new process
901 group will be created. This flag is necessary for using :func:`os.kill`
902 on the subprocess.
903
904 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
905
Jamesb5d9e082017-11-08 14:18:59 +0000906.. data:: ABOVE_NORMAL_PRIORITY_CLASS
907
908 A :class:`Popen` ``creationflags`` parameter to specify that a new process
909 will have an above average priority.
910
911 .. versionadded:: 3.7
912
913.. data:: BELOW_NORMAL_PRIORITY_CLASS
914
915 A :class:`Popen` ``creationflags`` parameter to specify that a new process
916 will have a below average priority.
917
918 .. versionadded:: 3.7
919
920.. data:: HIGH_PRIORITY_CLASS
921
922 A :class:`Popen` ``creationflags`` parameter to specify that a new process
923 will have a high priority.
924
925 .. versionadded:: 3.7
926
927.. data:: IDLE_PRIORITY_CLASS
928
929 A :class:`Popen` ``creationflags`` parameter to specify that a new process
930 will have an idle (lowest) priority.
931
932 .. versionadded:: 3.7
933
934.. data:: NORMAL_PRIORITY_CLASS
935
936 A :class:`Popen` ``creationflags`` parameter to specify that a new process
937 will have an normal priority. (default)
938
939 .. versionadded:: 3.7
940
941.. data:: REALTIME_PRIORITY_CLASS
942
943 A :class:`Popen` ``creationflags`` parameter to specify that a new process
944 will have realtime priority.
945 You should almost never use REALTIME_PRIORITY_CLASS, because this interrupts
946 system threads that manage mouse input, keyboard input, and background disk
947 flushing. This class can be appropriate for applications that "talk" directly
948 to hardware or that perform brief tasks that should have limited interruptions.
949
950 .. versionadded:: 3.7
951
952.. data:: CREATE_NO_WINDOW
953
954 A :class:`Popen` ``creationflags`` parameter to specify that a new process
955 will not create a window
956
957 .. versionadded:: 3.7
958
959.. data:: DETACHED_PROCESS
960
961 A :class:`Popen` ``creationflags`` parameter to specify that a new process
962 will not inherit its parent's console.
963 This value cannot be used with CREATE_NEW_CONSOLE.
964
965 .. versionadded:: 3.7
966
967.. data:: CREATE_DEFAULT_ERROR_MODE
968
969 A :class:`Popen` ``creationflags`` parameter to specify that a new process
970 does not inherit the error mode of the calling process. Instead, the new
971 process gets the default error mode.
972 This feature is particularly useful for multithreaded shell applications
973 that run with hard errors disabled.
974
975 .. versionadded:: 3.7
976
977.. data:: CREATE_BREAKAWAY_FROM_JOB
978
979 A :class:`Popen` ``creationflags`` parameter to specify that a new process
980 is not associated with the job.
981
982 .. versionadded:: 3.7
983
Gregory P. Smith6e730002015-04-14 16:14:25 -0700984.. _call-function-trio:
985
986Older high-level API
987--------------------
988
989Prior to Python 3.5, these three functions comprised the high level API to
990subprocess. You can now use :func:`run` in many cases, but lots of existing code
991calls these functions.
992
Alex Gaynor368cf1d2017-05-25 22:28:17 -0400993.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -0700994
995 Run the command described by *args*. Wait for command to complete, then
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300996 return the :attr:`~Popen.returncode` attribute.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700997
998 This is equivalent to::
999
1000 run(...).returncode
1001
1002 (except that the *input* and *check* parameters are not supported)
1003
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001004 The arguments shown above are merely the most
1005 common ones. The full function signature is largely the
1006 same as that of the :class:`Popen` constructor - this function passes all
1007 supplied arguments other than *timeout* directly through to that interface.
1008
Gregory P. Smith6e730002015-04-14 16:14:25 -07001009 .. note::
1010
1011 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1012 function. The child process will block if it generates enough
1013 output to a pipe to fill up the OS pipe buffer as the pipes are
1014 not being read from.
1015
1016 .. versionchanged:: 3.3
1017 *timeout* was added.
1018
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001019.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001020
1021 Run command with arguments. Wait for command to complete. If the return
1022 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
1023 :exc:`CalledProcessError` object will have the return code in the
1024 :attr:`~CalledProcessError.returncode` attribute.
1025
1026 This is equivalent to::
1027
1028 run(..., check=True)
1029
1030 (except that the *input* parameter is not supported)
1031
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001032 The arguments shown above are merely the most
1033 common ones. The full function signature is largely the
1034 same as that of the :class:`Popen` constructor - this function passes all
1035 supplied arguments other than *timeout* directly through to that interface.
1036
Gregory P. Smith6e730002015-04-14 16:14:25 -07001037 .. note::
1038
1039 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
1040 function. The child process will block if it generates enough
1041 output to a pipe to fill up the OS pipe buffer as the pipes are
1042 not being read from.
1043
1044 .. versionchanged:: 3.3
1045 *timeout* was added.
1046
1047
Steve Dower050acae2016-09-06 20:16:17 -07001048.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, \
Alex Gaynor368cf1d2017-05-25 22:28:17 -04001049 cwd=None, encoding=None, errors=None, \
Steve Dower050acae2016-09-06 20:16:17 -07001050 universal_newlines=False, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -07001051
1052 Run command with arguments and return its output.
1053
1054 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
1055 :exc:`CalledProcessError` object will have the return code in the
1056 :attr:`~CalledProcessError.returncode` attribute and any output in the
1057 :attr:`~CalledProcessError.output` attribute.
1058
1059 This is equivalent to::
1060
1061 run(..., check=True, stdout=PIPE).stdout
1062
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001063 The arguments shown above are merely the most common ones.
1064 The full function signature is largely the same as that of :func:`run` -
1065 most arguments are passed directly through to that interface.
1066 However, explicitly passing ``input=None`` to inherit the parent's
1067 standard input file handle is not supported.
1068
Gregory P. Smith6e730002015-04-14 16:14:25 -07001069 By default, this function will return the data as encoded bytes. The actual
1070 encoding of the output data may depend on the command being invoked, so the
1071 decoding to text will often need to be handled at the application level.
1072
1073 This behaviour may be overridden by setting *universal_newlines* to
1074 ``True`` as described above in :ref:`frequently-used-arguments`.
1075
1076 To also capture standard error in the result, use
1077 ``stderr=subprocess.STDOUT``::
1078
1079 >>> subprocess.check_output(
1080 ... "ls non_existent_file; exit 0",
1081 ... stderr=subprocess.STDOUT,
1082 ... shell=True)
1083 'ls: non_existent_file: No such file or directory\n'
1084
1085 .. versionadded:: 3.1
1086
1087 .. versionchanged:: 3.3
1088 *timeout* was added.
1089
1090 .. versionchanged:: 3.4
Berker Peksagbf1d4b62015-07-25 14:27:07 +03001091 Support for the *input* keyword argument was added.
Brian Curtine6242d72011-04-29 22:17:51 -05001092
Miss Islington (bot)4e7a9642018-02-06 17:12:06 -08001093 .. versionchanged:: 3.6
1094 *encoding* and *errors* were added. See :func:`run` for details.
1095
Benjamin Petersondcf97b92008-07-02 17:30:14 +00001096.. _subprocess-replacements:
1097
Ezio Melotti402f75d2012-11-08 10:07:10 +02001098Replacing Older Functions with the :mod:`subprocess` Module
1099-----------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00001100
Nick Coghlanc29248f2011-11-08 20:49:23 +10001101In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +00001102
1103.. note::
1104
Nick Coghlanc29248f2011-11-08 20:49:23 +10001105 All "a" functions in this section fail (more or less) silently if the
1106 executed program cannot be found; the "b" replacements raise :exc:`OSError`
1107 instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001108
Nick Coghlanc29248f2011-11-08 20:49:23 +10001109 In addition, the replacements using :func:`check_output` will fail with a
1110 :exc:`CalledProcessError` if the requested operation produces a non-zero
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +03001111 return code. The output is still available as the
1112 :attr:`~CalledProcessError.output` attribute of the raised exception.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001113
1114In the following examples, we assume that the relevant functions have already
Ezio Melotti402f75d2012-11-08 10:07:10 +02001115been imported from the :mod:`subprocess` module.
Georg Brandl116aa622007-08-15 14:28:22 +00001116
1117
1118Replacing /bin/sh shell backquote
1119^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1120
Martin Panter1050d2d2016-07-26 11:18:21 +02001121.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001122
1123 output=`mycmd myarg`
Georg Brandl116aa622007-08-15 14:28:22 +00001124
Martin Panter1050d2d2016-07-26 11:18:21 +02001125becomes::
1126
1127 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +00001128
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001129Replacing shell pipeline
1130^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001131
Martin Panter1050d2d2016-07-26 11:18:21 +02001132.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +00001133
1134 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001135
1136becomes::
1137
Georg Brandl116aa622007-08-15 14:28:22 +00001138 p1 = Popen(["dmesg"], stdout=PIPE)
1139 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001140 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +00001141 output = p2.communicate()[0]
1142
Gregory P. Smithe09d2f12011-02-05 21:47:25 +00001143The p1.stdout.close() call after starting the p2 is important in order for p1
1144to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +00001145
Nick Coghlanc29248f2011-11-08 20:49:23 +10001146Alternatively, for trusted input, the shell's own pipeline support may still
Martin Panter1050d2d2016-07-26 11:18:21 +02001147be used directly:
1148
1149.. code-block:: bash
Nick Coghlanc29248f2011-11-08 20:49:23 +10001150
1151 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +02001152
1153becomes::
1154
Nick Coghlanc29248f2011-11-08 20:49:23 +10001155 output=check_output("dmesg | grep hda", shell=True)
1156
1157
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001158Replacing :func:`os.system`
1159^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001160
1161::
1162
1163 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +10001164 # becomes
1165 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001166
1167Notes:
1168
1169* Calling the program through the shell is usually not required.
1170
Georg Brandl116aa622007-08-15 14:28:22 +00001171A more realistic example would look like this::
1172
1173 try:
1174 retcode = call("mycmd" + " myarg", shell=True)
1175 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +00001176 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001177 else:
Collin Winterc79461b2007-09-01 23:34:30 +00001178 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001179 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +00001180 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001181
1182
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001183Replacing the :func:`os.spawn <os.spawnl>` family
1184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001185
1186P_NOWAIT example::
1187
1188 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
1189 ==>
1190 pid = Popen(["/bin/mycmd", "myarg"]).pid
1191
1192P_WAIT example::
1193
1194 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
1195 ==>
1196 retcode = call(["/bin/mycmd", "myarg"])
1197
1198Vector example::
1199
1200 os.spawnvp(os.P_NOWAIT, path, args)
1201 ==>
1202 Popen([path] + args[1:])
1203
1204Environment example::
1205
1206 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
1207 ==>
1208 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
1209
1210
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001211
1212Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
1213^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001214
1215::
1216
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001217 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001218 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001219 p = Popen(cmd, shell=True, bufsize=bufsize,
1220 stdin=PIPE, stdout=PIPE, close_fds=True)
1221 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +00001222
1223::
1224
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001225 (child_stdin,
1226 child_stdout,
1227 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001228 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001229 p = Popen(cmd, shell=True, bufsize=bufsize,
1230 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
1231 (child_stdin,
1232 child_stdout,
1233 child_stderr) = (p.stdin, p.stdout, p.stderr)
1234
1235::
1236
1237 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
1238 ==>
1239 p = Popen(cmd, shell=True, bufsize=bufsize,
1240 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
1241 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
1242
1243Return code handling translates as follows::
1244
1245 pipe = os.popen(cmd, 'w')
1246 ...
1247 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +00001248 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001249 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001250 ==>
R David Murray17227a72015-09-04 10:01:19 -04001251 process = Popen(cmd, stdin=PIPE)
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001252 ...
1253 process.stdin.close()
1254 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001255 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001256
1257
1258Replacing functions from the :mod:`popen2` module
1259^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1260
1261.. note::
1262
1263 If the cmd argument to popen2 functions is a string, the command is executed
1264 through /bin/sh. If it is a list, the command is directly executed.
1265
1266::
1267
1268 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
1269 ==>
R David Murrayae9d1932014-05-14 10:09:52 -04001270 p = Popen("somestring", shell=True, bufsize=bufsize,
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001271 stdin=PIPE, stdout=PIPE, close_fds=True)
1272 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1273
1274::
1275
1276 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
1277 ==>
1278 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
1279 stdin=PIPE, stdout=PIPE, close_fds=True)
1280 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1281
1282:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
1283:class:`subprocess.Popen`, except that:
1284
1285* :class:`Popen` raises an exception if the execution fails.
1286
1287* the *capturestderr* argument is replaced with the *stderr* argument.
1288
1289* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
1290
1291* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +00001292 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
1293 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +03001294
Nick Coghlanc29248f2011-11-08 20:49:23 +10001295
Nick Coghlanc29248f2011-11-08 20:49:23 +10001296Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001297---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001298
1299This module also provides the following legacy functions from the 2.x
1300``commands`` module. These operations implicitly invoke the system shell and
1301none of the guarantees described above regarding security and exception
1302handling consistency are valid for these functions.
1303
1304.. function:: getstatusoutput(cmd)
1305
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001306 Return ``(exitcode, output)`` of executing *cmd* in a shell.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001307
Tim Golden60798142013-11-05 12:57:25 +00001308 Execute the string *cmd* in a shell with :meth:`Popen.check_output` and
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001309 return a 2-tuple ``(exitcode, output)``. The locale encoding is used;
Tim Golden60798142013-11-05 12:57:25 +00001310 see the notes on :ref:`frequently-used-arguments` for more details.
Tim Golden3a2abb52013-11-03 18:24:50 +00001311
1312 A trailing newline is stripped from the output.
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001313 The exit code for the command can be interpreted as the return code
1314 of subprocess. Example::
Nick Coghlanc29248f2011-11-08 20:49:23 +10001315
1316 >>> subprocess.getstatusoutput('ls /bin/ls')
1317 (0, '/bin/ls')
1318 >>> subprocess.getstatusoutput('cat /bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001319 (1, 'cat: /bin/junk: No such file or directory')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001320 >>> subprocess.getstatusoutput('/bin/junk')
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001321 (127, 'sh: /bin/junk: not found')
1322 >>> subprocess.getstatusoutput('/bin/kill $$')
1323 (-15, '')
Nick Coghlanc29248f2011-11-08 20:49:23 +10001324
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001325 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001326
1327 .. versionchanged:: 3.3.4
Gregory P. Smith738b7d92017-09-06 17:39:23 -07001328 Windows support was added.
1329
1330 The function now returns (exitcode, output) instead of (status, output)
1331 as it did in Python 3.3.3 and earlier. See :func:`WEXITSTATUS`.
Nick Coghlanc29248f2011-11-08 20:49:23 +10001332
1333
1334.. function:: getoutput(cmd)
1335
1336 Return output (stdout and stderr) of executing *cmd* in a shell.
1337
1338 Like :func:`getstatusoutput`, except the exit status is ignored and the return
1339 value is a string containing the command's output. Example::
1340
1341 >>> subprocess.getoutput('ls /bin/ls')
1342 '/bin/ls'
1343
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001344 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001345
1346 .. versionchanged:: 3.3.4
1347 Windows support added
Nick Coghlanc29248f2011-11-08 20:49:23 +10001348
Nick Coghlan32e4a582011-11-08 21:50:58 +10001349
Eli Bendersky046a7642011-04-15 07:23:26 +03001350Notes
1351-----
1352
1353.. _converting-argument-sequence:
1354
1355Converting an argument sequence to a string on Windows
1356^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1357
1358On Windows, an *args* sequence is converted to a string that can be parsed
1359using the following rules (which correspond to the rules used by the MS C
1360runtime):
1361
13621. Arguments are delimited by white space, which is either a
1363 space or a tab.
1364
13652. A string surrounded by double quotation marks is
1366 interpreted as a single argument, regardless of white space
1367 contained within. A quoted string can be embedded in an
1368 argument.
1369
13703. A double quotation mark preceded by a backslash is
1371 interpreted as a literal double quotation mark.
1372
13734. Backslashes are interpreted literally, unless they
1374 immediately precede a double quotation mark.
1375
13765. If backslashes immediately precede a double quotation mark,
1377 every pair of backslashes is interpreted as a literal
1378 backslash. If the number of backslashes is odd, the last
1379 backslash escapes the next double quotation mark as
1380 described in rule 3.
1381
Eli Benderskyd2112312011-04-15 07:26:28 +03001382
Éric Araujo9bce3112011-07-27 18:29:31 +02001383.. seealso::
1384
1385 :mod:`shlex`
1386 Module which provides function to parse and escape command lines.