blob: 356605f76c4c79d7ed312e559cad6bfbb9aca1e4 [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,\
41 shell=False, timeout=None, check=False)
Nick Coghlanc29248f2011-11-08 20:49:23 +100042
43 Run the command described by *args*. Wait for command to complete, then
Gregory P. Smith6e730002015-04-14 16:14:25 -070044 return a :class:`CompletedProcess` instance.
Nick Coghlanc29248f2011-11-08 20:49:23 +100045
46 The arguments shown above are merely the most common ones, described below
Nick Coghlan217f05b2011-11-08 22:11:21 +100047 in :ref:`frequently-used-arguments` (hence the use of keyword-only notation
48 in the abbreviated signature). The full function signature is largely the
Gregory P. Smith6e730002015-04-14 16:14:25 -070049 same as that of the :class:`Popen` constructor - apart from *timeout*,
50 *input* and *check*, all the arguments to this function are passed through to
51 that interface.
Nick Coghlan217f05b2011-11-08 22:11:21 +100052
Gregory P. Smith6e730002015-04-14 16:14:25 -070053 This does not capture stdout or stderr by default. To do so, pass
54 :data:`PIPE` for the *stdout* and/or *stderr* arguments.
Nick Coghlanc29248f2011-11-08 20:49:23 +100055
Gregory P. Smith6e730002015-04-14 16:14:25 -070056 The *timeout* argument is passed to :meth:`Popen.communicate`. If the timeout
57 expires, the child process will be killed and waited for. The
Nick Coghlan217f05b2011-11-08 22:11:21 +100058 :exc:`TimeoutExpired` exception will be re-raised after the child process
59 has terminated.
Nick Coghlanc29248f2011-11-08 20:49:23 +100060
Serhiy Storchakafcd9f222013-04-22 20:20:54 +030061 The *input* argument is passed to :meth:`Popen.communicate` and thus to the
62 subprocess's stdin. If used it must be a byte sequence, or a string if
63 ``universal_newlines=True``. When used, the internal :class:`Popen` object
64 is automatically created with ``stdin=PIPE``, and the *stdin* argument may
65 not be used as well.
66
Gregory P. Smith6e730002015-04-14 16:14:25 -070067 If *check* is True, and the process exits with a non-zero exit code, a
68 :exc:`CalledProcessError` exception will be raised. Attributes of that
69 exception hold the arguments, the exit code, and stdout and stderr if they
70 were captured.
71
Nick Coghlanc29248f2011-11-08 20:49:23 +100072 Examples::
73
Gregory P. Smith6e730002015-04-14 16:14:25 -070074 >>> subprocess.run(["ls", "-l"]) # doesn't capture output
75 CompletedProcess(args=['ls', '-l'], returncode=0)
Nick Coghlanc29248f2011-11-08 20:49:23 +100076
Gregory P. Smith6e730002015-04-14 16:14:25 -070077 >>> subprocess.run("exit 1", shell=True, check=True)
Nick Coghlanc29248f2011-11-08 20:49:23 +100078 Traceback (most recent call last):
Gregory P. Smith6e730002015-04-14 16:14:25 -070079 ...
Nick Coghlanc29248f2011-11-08 20:49:23 +100080 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
81
Gregory P. Smith6e730002015-04-14 16:14:25 -070082 >>> subprocess.run(["ls", "-l", "/dev/null"], stdout=subprocess.PIPE)
83 CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
84 stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n')
Nick Coghlanc29248f2011-11-08 20:49:23 +100085
Gregory P. Smith6e730002015-04-14 16:14:25 -070086 .. versionadded:: 3.5
Nick Coghlanc29248f2011-11-08 20:49:23 +100087
Gregory P. Smith6e730002015-04-14 16:14:25 -070088.. class:: CompletedProcess
Nick Coghlanc29248f2011-11-08 20:49:23 +100089
Gregory P. Smith6e730002015-04-14 16:14:25 -070090 The return value from :func:`run`, representing a process that has finished.
Nick Coghlanc29248f2011-11-08 20:49:23 +100091
Gregory P. Smith6e730002015-04-14 16:14:25 -070092 .. attribute:: args
Nick Coghlanc29248f2011-11-08 20:49:23 +100093
Gregory P. Smith6e730002015-04-14 16:14:25 -070094 The arguments used to launch the process. This may be a list or a string.
Nick Coghlanc29248f2011-11-08 20:49:23 +100095
Gregory P. Smith6e730002015-04-14 16:14:25 -070096 .. attribute:: returncode
Serhiy Storchakafcd9f222013-04-22 20:20:54 +030097
Gregory P. Smith6e730002015-04-14 16:14:25 -070098 Exit status of the child process. Typically, an exit status of 0 indicates
99 that it ran successfully.
Nick Coghlan217f05b2011-11-08 22:11:21 +1000100
Gregory P. Smith6e730002015-04-14 16:14:25 -0700101 A negative value ``-N`` indicates that the child was terminated by signal
102 ``N`` (POSIX only).
103
104 .. attribute:: stdout
105
106 Captured stdout from the child process. A bytes sequence, or a string if
107 :func:`run` was called with ``universal_newlines=True``. None if stdout
108 was not captured.
109
110 If you ran the process with ``stderr=subprocess.STDOUT``, stdout and
111 stderr will be combined in this attribute, and :attr:`stderr` will be
112 None.
113
114 .. attribute:: stderr
115
116 Captured stderr from the child process. A bytes sequence, or a string if
117 :func:`run` was called with ``universal_newlines=True``. None if stderr
118 was not captured.
119
120 .. method:: check_returncode()
121
122 If :attr:`returncode` is non-zero, raise a :exc:`CalledProcessError`.
123
124 .. versionadded:: 3.5
Nick Coghlan217f05b2011-11-08 22:11:21 +1000125
126.. data:: DEVNULL
127
128 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
129 to :class:`Popen` and indicates that the special file :data:`os.devnull`
130 will be used.
131
132 .. versionadded:: 3.3
133
Nick Coghlanc29248f2011-11-08 20:49:23 +1000134
135.. data:: PIPE
136
137 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
138 to :class:`Popen` and indicates that a pipe to the standard stream should be
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700139 opened. Most useful with :meth:`Popen.communicate`.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000140
141
142.. data:: STDOUT
143
144 Special value that can be used as the *stderr* argument to :class:`Popen` and
145 indicates that standard error should go into the same handle as standard
146 output.
147
148
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300149.. exception:: SubprocessError
150
151 Base class for all other exceptions from this module.
152
153 .. versionadded:: 3.3
154
155
156.. exception:: TimeoutExpired
157
158 Subclass of :exc:`SubprocessError`, raised when a timeout expires
159 while waiting for a child process.
160
161 .. attribute:: cmd
162
163 Command that was used to spawn the child process.
164
165 .. attribute:: timeout
166
167 Timeout in seconds.
168
169 .. attribute:: output
170
Gregory P. Smith6e730002015-04-14 16:14:25 -0700171 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300172 :func:`check_output`. Otherwise, ``None``.
173
Gregory P. Smith6e730002015-04-14 16:14:25 -0700174 .. attribute:: stdout
175
176 Alias for output, for symmetry with :attr:`stderr`.
177
178 .. attribute:: stderr
179
180 Stderr output of the child process if it was captured by :func:`run`.
181 Otherwise, ``None``.
182
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300183 .. versionadded:: 3.3
184
Gregory P. Smith6e730002015-04-14 16:14:25 -0700185 .. versionchanged:: 3.5
186 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300187
188.. exception:: CalledProcessError
189
190 Subclass of :exc:`SubprocessError`, raised when a process run by
191 :func:`check_call` or :func:`check_output` returns a non-zero exit status.
192
193 .. attribute:: returncode
194
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)583a1d62016-06-03 00:31:21 +0000195 Exit status of the child process. If the process exited due to a
196 signal, this will be the negative signal number.
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300197
198 .. attribute:: cmd
199
200 Command that was used to spawn the child process.
201
202 .. attribute:: output
203
Gregory P. Smith6e730002015-04-14 16:14:25 -0700204 Output of the child process if it was captured by :func:`run` or
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300205 :func:`check_output`. Otherwise, ``None``.
206
Gregory P. Smith6e730002015-04-14 16:14:25 -0700207 .. attribute:: stdout
208
209 Alias for output, for symmetry with :attr:`stderr`.
210
211 .. attribute:: stderr
212
213 Stderr output of the child process if it was captured by :func:`run`.
214 Otherwise, ``None``.
215
216 .. versionchanged:: 3.5
217 *stdout* and *stderr* attributes added
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300218
219
Nick Coghlanc29248f2011-11-08 20:49:23 +1000220.. _frequently-used-arguments:
221
222Frequently Used Arguments
223^^^^^^^^^^^^^^^^^^^^^^^^^
224
225To support a wide variety of use cases, the :class:`Popen` constructor (and
226the convenience functions) accept a large number of optional arguments. For
227most typical use cases, many of these arguments can be safely left at their
228default values. The arguments that are most commonly needed are:
229
230 *args* is required for all calls and should be a string, or a sequence of
231 program arguments. Providing a sequence of arguments is generally
232 preferred, as it allows the module to take care of any required escaping
233 and quoting of arguments (e.g. to permit spaces in file names). If passing
234 a single string, either *shell* must be :const:`True` (see below) or else
235 the string must simply name the program to be executed without specifying
236 any arguments.
237
238 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
239 standard output and standard error file handles, respectively. Valid values
Nick Coghlan217f05b2011-11-08 22:11:21 +1000240 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
241 integer), an existing file object, and ``None``. :data:`PIPE` indicates
242 that a new pipe to the child should be created. :data:`DEVNULL` indicates
243 that the special file :data:`os.devnull` will be used. With the default
244 settings of ``None``, no redirection will occur; the child's file handles
245 will be inherited from the parent. Additionally, *stderr* can be
246 :data:`STDOUT`, which indicates that the stderr data from the child
247 process should be captured into the same file handle as for *stdout*.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000248
R David Murray1b00f252012-08-15 10:43:58 -0400249 .. index::
250 single: universal newlines; subprocess module
251
Ronald Oussoren385521c2013-07-07 09:26:45 +0200252 If *universal_newlines* is ``False`` the file objects *stdin*, *stdout* and
253 *stderr* will be opened as binary streams, and no line ending conversion is
254 done.
255
256 If *universal_newlines* is ``True``, these file objects
257 will be opened as text streams in :term:`universal newlines` mode
R David Murray0689ce42012-08-15 11:13:31 -0400258 using the encoding returned by :func:`locale.getpreferredencoding(False)
Ronald Oussoren385521c2013-07-07 09:26:45 +0200259 <locale.getpreferredencoding>`. For *stdin*, line ending characters
R David Murray0689ce42012-08-15 11:13:31 -0400260 ``'\n'`` in the input will be converted to the default line separator
261 :data:`os.linesep`. For *stdout* and *stderr*, all line endings in the
262 output will be converted to ``'\n'``. For more information see the
263 documentation of the :class:`io.TextIOWrapper` class when the *newline*
264 argument to its constructor is ``None``.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000265
Andrew Svetlov50be4522012-08-13 22:09:04 +0300266 .. note::
267
Gregory P. Smith1f8a40b2013-03-20 18:32:03 -0700268 The newlines attribute of the file objects :attr:`Popen.stdin`,
269 :attr:`Popen.stdout` and :attr:`Popen.stderr` are not updated by
270 the :meth:`Popen.communicate` method.
Andrew Svetlov50be4522012-08-13 22:09:04 +0300271
272 If *shell* is ``True``, the specified command will be executed through
Ezio Melotti186d5232012-09-15 08:34:08 +0300273 the shell. This can be useful if you are using Python primarily for the
Nick Coghlanc29248f2011-11-08 20:49:23 +1000274 enhanced control flow it offers over most system shells and still want
Ezio Melotti186d5232012-09-15 08:34:08 +0300275 convenient access to other shell features such as shell pipes, filename
276 wildcards, environment variable expansion, and expansion of ``~`` to a
277 user's home directory. However, note that Python itself offers
278 implementations of many shell-like features (in particular, :mod:`glob`,
279 :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
280 :func:`os.path.expanduser`, and :mod:`shutil`).
Nick Coghlanc29248f2011-11-08 20:49:23 +1000281
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300282 .. versionchanged:: 3.3
283 When *universal_newlines* is ``True``, the class uses the encoding
284 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
285 instead of ``locale.getpreferredencoding()``. See the
286 :class:`io.TextIOWrapper` class for more information on this change.
287
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700288 .. note::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000289
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700290 Read the `Security Considerations`_ section before using ``shell=True``.
Andrew Svetlovc2415eb2012-10-28 11:42:26 +0200291
Nick Coghlanc29248f2011-11-08 20:49:23 +1000292These options, along with all of the other options, are described in more
293detail in the :class:`Popen` constructor documentation.
294
295
Sandro Tosi1526ad12011-12-25 11:27:37 +0100296Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100297^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000298
299The underlying process creation and management in this module is handled by
300the :class:`Popen` class. It offers a lot of flexibility so that developers
301are able to handle the less common cases not covered by the convenience
302functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000303
304
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700305.. class:: Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, \
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700306 stderr=None, preexec_fn=None, close_fds=True, shell=False, \
307 cwd=None, env=None, universal_newlines=False, \
308 startupinfo=None, creationflags=0, restore_signals=True, \
309 start_new_session=False, pass_fds=())
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700311 Execute a child program in a new process. On POSIX, the class uses
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700312 :meth:`os.execvp`-like behavior to execute the child program. On Windows,
313 the class uses the Windows ``CreateProcess()`` function. The arguments to
314 :class:`Popen` are as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000315
Chris Jerdonek470ee392012-10-08 23:06:57 -0700316 *args* should be a sequence of program arguments or else a single string.
317 By default, the program to execute is the first item in *args* if *args* is
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700318 a sequence. If *args* is a string, the interpretation is
319 platform-dependent and described below. See the *shell* and *executable*
320 arguments for additional differences from the default behavior. Unless
321 otherwise stated, it is recommended to pass *args* as a sequence.
Georg Brandl116aa622007-08-15 14:28:22 +0000322
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700323 On POSIX, if *args* is a string, the string is interpreted as the name or
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700324 path of the program to execute. However, this can only be done if not
325 passing arguments to the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000326
R. David Murray5973e4d2010-02-04 16:41:57 +0000327 .. note::
328
329 :meth:`shlex.split` can be useful when determining the correct
330 tokenization for *args*, especially in complex cases::
331
332 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000333 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000334 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
335 >>> args = shlex.split(command_line)
336 >>> print(args)
337 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
338 >>> p = subprocess.Popen(args) # Success!
339
340 Note in particular that options (such as *-input*) and arguments (such
341 as *eggs.txt*) that are separated by whitespace in the shell go in separate
342 list elements, while arguments that need quoting or backslash escaping when
343 used in the shell (such as filenames containing spaces or the *echo* command
344 shown above) are single list elements.
345
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700346 On Windows, if *args* is a sequence, it will be converted to a string in a
347 manner described in :ref:`converting-argument-sequence`. This is because
348 the underlying ``CreateProcess()`` operates on strings.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700349
350 The *shell* argument (which defaults to *False*) specifies whether to use
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700351 the shell as the program to execute. If *shell* is *True*, it is
352 recommended to pass *args* as a string rather than as a sequence.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700353
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700354 On POSIX with ``shell=True``, the shell defaults to :file:`/bin/sh`. If
Chris Jerdonek470ee392012-10-08 23:06:57 -0700355 *args* is a string, the string specifies the command
356 to execute through the shell. This means that the string must be
R. David Murray5973e4d2010-02-04 16:41:57 +0000357 formatted exactly as it would be when typed at the shell prompt. This
358 includes, for example, quoting or backslash escaping filenames with spaces in
359 them. If *args* is a sequence, the first item specifies the command string, and
360 any additional items will be treated as additional arguments to the shell
Chris Jerdonek470ee392012-10-08 23:06:57 -0700361 itself. That is to say, :class:`Popen` does the equivalent of::
R. David Murray5973e4d2010-02-04 16:41:57 +0000362
363 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000364
Chris Jerdonek470ee392012-10-08 23:06:57 -0700365 On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
366 specifies the default shell. The only time you need to specify
367 ``shell=True`` on Windows is when the command you wish to execute is built
368 into the shell (e.g. :command:`dir` or :command:`copy`). You do not need
369 ``shell=True`` to run a batch file or console-based executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000370
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700371 .. note::
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700372
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700373 Read the `Security Considerations`_ section before using ``shell=True``.
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700374
Antoine Pitrouafe8d062014-09-21 21:10:56 +0200375 *bufsize* will be supplied as the corresponding argument to the
376 :func:`open` function when creating the stdin/stdout/stderr pipe
377 file objects:
378
379 - :const:`0` means unbuffered (read and write are one
380 system call and can return short)
381 - :const:`1` means line buffered
382 (only usable if ``universal_newlines=True`` i.e., in a text mode)
383 - any other positive value means use a buffer of approximately that
384 size
385 - negative bufsize (the default) means the system default of
386 io.DEFAULT_BUFFER_SIZE will be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000387
Georg Brandl37b70bb2013-11-25 08:48:37 +0100388 .. versionchanged:: 3.3.1
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700389 *bufsize* now defaults to -1 to enable buffering by default to match the
Georg Brandl37b70bb2013-11-25 08:48:37 +0100390 behavior that most code expects. In versions prior to Python 3.2.4 and
391 3.3.1 it incorrectly defaulted to :const:`0` which was unbuffered
392 and allowed short reads. This was unintentional and did not match the
393 behavior of Python 2 as most code expected.
Antoine Pitrou4b876202010-06-02 17:10:49 +0000394
Chris Jerdonek470ee392012-10-08 23:06:57 -0700395 The *executable* argument specifies a replacement program to execute. It
396 is very seldom needed. When ``shell=False``, *executable* replaces the
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700397 program to execute specified by *args*. However, the original *args* is
398 still passed to the program. Most programs treat the program specified
399 by *args* as the command name, which can then be different from the program
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700400 actually executed. On POSIX, the *args* name
Chris Jerdonek470ee392012-10-08 23:06:57 -0700401 becomes the display name for the executable in utilities such as
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700402 :program:`ps`. If ``shell=True``, on POSIX the *executable* argument
Chris Jerdonek470ee392012-10-08 23:06:57 -0700403 specifies a replacement shell for the default :file:`/bin/sh`.
Georg Brandl116aa622007-08-15 14:28:22 +0000404
Nick Coghlanc29248f2011-11-08 20:49:23 +1000405 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000406 standard output and standard error file handles, respectively. Valid values
Ross Lagerwallba102ec2011-03-16 18:40:25 +0200407 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
408 integer), an existing :term:`file object`, and ``None``. :data:`PIPE`
409 indicates that a new pipe to the child should be created. :data:`DEVNULL`
Nick Coghlan217f05b2011-11-08 22:11:21 +1000410 indicates that the special file :data:`os.devnull` will be used. With the
411 default settings of ``None``, no redirection will occur; the child's file
412 handles will be inherited from the parent. Additionally, *stderr* can be
413 :data:`STDOUT`, which indicates that the stderr data from the applications
414 should be captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000417 child process just before the child is executed.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700418 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000419
420 .. warning::
421
422 The *preexec_fn* parameter is not safe to use in the presence of threads
423 in your application. The child process could deadlock before exec is
424 called.
425 If you must use it, keep it trivial! Minimize the number of libraries
426 you call into.
427
428 .. note::
429
430 If you need to modify the environment for the child use the *env*
431 parameter rather than doing it in a *preexec_fn*.
432 The *start_new_session* parameter can take the place of a previously
433 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000434
435 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700436 :const:`2` will be closed before the child process is executed. (POSIX only).
437 The default varies by platform: Always true on POSIX. On Windows it is
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000438 true when *stdin*/*stdout*/*stderr* are :const:`None`, false otherwise.
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000439 On Windows, if *close_fds* is true then no handles will be inherited by the
Georg Brandl116aa622007-08-15 14:28:22 +0000440 child process. Note that on Windows, you cannot set *close_fds* to true and
441 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
442
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000443 .. versionchanged:: 3.2
444 The default for *close_fds* was changed from :const:`False` to
445 what is described above.
446
447 *pass_fds* is an optional sequence of file descriptors to keep open
448 between the parent and child. Providing any *pass_fds* forces
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700449 *close_fds* to be :const:`True`. (POSIX only)
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000450
451 .. versionadded:: 3.2
452 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000453
Chris Jerdonekec3ea942012-09-30 00:10:28 -0700454 If *cwd* is not ``None``, the function changes the working directory to
455 *cwd* before executing the child. In particular, the function looks for
456 *executable* (or for the first item in *args*) relative to *cwd* if the
457 executable path is a relative path.
Georg Brandl116aa622007-08-15 14:28:22 +0000458
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200459 If *restore_signals* is true (the default) all signals that Python has set to
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000460 SIG_IGN are restored to SIG_DFL in the child process before the exec.
461 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700462 (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000463
464 .. versionchanged:: 3.2
465 *restore_signals* was added.
466
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200467 If *start_new_session* is true the setsid() system call will be made in the
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700468 child process prior to the execution of the subprocess. (POSIX only)
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000469
470 .. versionchanged:: 3.2
471 *start_new_session* was added.
472
Christian Heimesa342c012008-04-20 21:01:16 +0000473 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000474 variables for the new process; these are used instead of the default
475 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000476
R. David Murray1055e892009-04-16 18:15:32 +0000477 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000478
Georg Brandl2708f3a2009-12-20 14:38:23 +0000479 If specified, *env* must provide any variables required for the program to
480 execute. On Windows, in order to run a `side-by-side assembly`_ the
481 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000482
Georg Brandl5d941342016-02-26 19:37:12 +0100483 .. _side-by-side assembly: https://en.wikipedia.org/wiki/Side-by-Side_Assembly
R. David Murray1055e892009-04-16 18:15:32 +0000484
Andrew Svetlov50be4522012-08-13 22:09:04 +0300485 If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
R David Murray1b00f252012-08-15 10:43:58 -0400486 and *stderr* are opened as text streams in universal newlines mode, as
Ronald Oussorena6865052013-07-06 10:23:59 +0200487 described above in :ref:`frequently-used-arguments`, otherwise they are
488 opened as binary streams.
Georg Brandl116aa622007-08-15 14:28:22 +0000489
Brian Curtine6242d72011-04-29 22:17:51 -0500490 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
491 passed to the underlying ``CreateProcess`` function.
Brian Curtin30401932011-04-29 22:20:57 -0500492 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
493 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl116aa622007-08-15 14:28:22 +0000494
Gregory P. Smith6b657452011-05-11 21:42:08 -0700495 Popen objects are supported as context managers via the :keyword:`with` statement:
496 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000497 ::
498
499 with Popen(["ifconfig"], stdout=PIPE) as proc:
500 log.write(proc.stdout.read())
501
502 .. versionchanged:: 3.2
503 Added context manager support.
504
Georg Brandl116aa622007-08-15 14:28:22 +0000505
Georg Brandl116aa622007-08-15 14:28:22 +0000506Exceptions
507^^^^^^^^^^
508
509Exceptions raised in the child process, before the new program has started to
510execute, will be re-raised in the parent. Additionally, the exception object
511will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000512containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000513
514The most common exception raised is :exc:`OSError`. This occurs, for example,
515when trying to execute a non-existent file. Applications should prepare for
516:exc:`OSError` exceptions.
517
518A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
519arguments.
520
Nick Coghlanc29248f2011-11-08 20:49:23 +1000521:func:`check_call` and :func:`check_output` will raise
522:exc:`CalledProcessError` if the called process returns a non-zero return
523code.
Georg Brandl116aa622007-08-15 14:28:22 +0000524
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400525All of the functions and methods that accept a *timeout* parameter, such as
526:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
527the timeout expires before the process exits.
528
Ronald Oussorenc1577902011-03-16 10:03:10 -0400529Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400530
531 .. versionadded:: 3.3
532 The :exc:`SubprocessError` base class was added.
533
Georg Brandl116aa622007-08-15 14:28:22 +0000534
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700535Security Considerations
536-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000537
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700538Unlike some other popen functions, this implementation will never
539implicitly call a system shell. This means that all characters,
540including shell metacharacters, can safely be passed to child processes.
541If the shell is invoked explicitly, via ``shell=True``, it is the application's
542responsibility to ensure that all whitespace and metacharacters are
543quoted appropriately to avoid
Georg Brandl5d941342016-02-26 19:37:12 +0100544`shell injection <https://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700545vulnerabilities.
546
547When using ``shell=True``, the :func:`shlex.quote` function can be
548used to properly escape whitespace and shell metacharacters in strings
549that are going to be used to construct shell commands.
Georg Brandl116aa622007-08-15 14:28:22 +0000550
551
552Popen Objects
553-------------
554
555Instances of the :class:`Popen` class have the following methods:
556
557
558.. method:: Popen.poll()
559
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300560 Check if child process has terminated. Set and return
561 :attr:`~Popen.returncode` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000562
563
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400564.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000565
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300566 Wait for child process to terminate. Set and return
567 :attr:`~Popen.returncode` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000568
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400569 If the process does not terminate after *timeout* seconds, raise a
570 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
571 retry the wait.
572
Victor Stinner07171242014-02-24 13:18:47 +0100573 .. note::
574
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700575 This will deadlock when using ``stdout=PIPE`` or ``stderr=PIPE``
576 and the child process generates enough output to a pipe such that
577 it blocks waiting for the OS pipe buffer to accept more data.
578 Use :meth:`Popen.communicate` when using pipes to avoid that.
579
580 .. note::
581
Victor Stinner07171242014-02-24 13:18:47 +0100582 The function is implemented using a busy loop (non-blocking call and
583 short sleeps). Use the :mod:`asyncio` module for an asynchronous wait:
584 see :class:`asyncio.create_subprocess_exec`.
585
Reid Kleckner28f13032011-03-14 12:36:53 -0400586 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400587 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000588
Gregory P. Smithbbe33352014-02-11 09:21:03 -0800589 .. deprecated:: 3.4
590
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700591 Do not use the *endtime* parameter. It is was unintentionally
592 exposed in 3.3 but was left undocumented as it was intended to be
593 private for internal use. Use *timeout* instead.
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400594
595.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000596
597 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400598 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700599 *input* argument should be data to be sent to the child process, or
600 ``None``, if no data should be sent to the child. The type of *input*
601 must be bytes or, if *universal_newlines* was ``True``, a string.
Georg Brandl116aa622007-08-15 14:28:22 +0000602
Victor Stinner39892052014-10-14 00:52:07 +0200603 :meth:`communicate` returns a tuple ``(stdout_data, stderr_data)``.
Andrew Kuchling4f7b0c32014-04-14 15:08:18 -0400604 The data will be bytes or, if *universal_newlines* was ``True``, strings.
Georg Brandl116aa622007-08-15 14:28:22 +0000605
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000606 Note that if you want to send data to the process's stdin, you need to create
607 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
608 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
609 ``stderr=PIPE`` too.
610
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400611 If the process does not terminate after *timeout* seconds, a
612 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
613 retrying communication will not lose any output.
614
615 The child process is not killed if the timeout expires, so in order to
616 cleanup properly a well-behaved application should kill the child process and
617 finish communication::
618
619 proc = subprocess.Popen(...)
620 try:
621 outs, errs = proc.communicate(timeout=15)
622 except TimeoutExpired:
623 proc.kill()
624 outs, errs = proc.communicate()
625
Christian Heimes7f044312008-01-06 17:05:40 +0000626 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000627
Christian Heimes7f044312008-01-06 17:05:40 +0000628 The data read is buffered in memory, so do not use this method if the data
629 size is large or unlimited.
630
Reid Kleckner28f13032011-03-14 12:36:53 -0400631 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400632 *timeout* was added.
633
Georg Brandl116aa622007-08-15 14:28:22 +0000634
Christian Heimesa342c012008-04-20 21:01:16 +0000635.. method:: Popen.send_signal(signal)
636
637 Sends the signal *signal* to the child.
638
639 .. note::
640
Brian Curtineb24d742010-04-12 17:16:38 +0000641 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000642 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000643 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000644
Christian Heimesa342c012008-04-20 21:01:16 +0000645
646.. method:: Popen.terminate()
647
648 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000649 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000650 to stop the child.
651
Christian Heimesa342c012008-04-20 21:01:16 +0000652
653.. method:: Popen.kill()
654
655 Kills the child. On Posix OSs the function sends SIGKILL to the child.
656 On Windows :meth:`kill` is an alias for :meth:`terminate`.
657
Christian Heimesa342c012008-04-20 21:01:16 +0000658
Georg Brandl116aa622007-08-15 14:28:22 +0000659The following attributes are also available:
660
Gregory P. Smith024c5ee2014-04-29 11:33:23 -0700661.. attribute:: Popen.args
662
663 The *args* argument as it was passed to :class:`Popen` -- a
664 sequence of program arguments or else a single string.
665
666 .. versionadded:: 3.3
Georg Brandl734e2682008-08-12 08:18:18 +0000667
Georg Brandl116aa622007-08-15 14:28:22 +0000668.. attribute:: Popen.stdin
669
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500670 If the *stdin* argument was :data:`PIPE`, this attribute is a writeable
671 stream object as returned by :func:`open`. If the *universal_newlines*
672 argument was ``True``, the stream is a text stream, otherwise it is a byte
673 stream. If the *stdin* argument was not :data:`PIPE`, this attribute is
674 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000675
676
677.. attribute:: Popen.stdout
678
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500679 If the *stdout* argument was :data:`PIPE`, this attribute is a readable
680 stream object as returned by :func:`open`. Reading from the stream provides
681 output from the child process. If the *universal_newlines* argument was
682 ``True``, the stream is a text stream, otherwise it is a byte stream. If the
683 *stdout* argument was not :data:`PIPE`, this attribute is ``None``.
Benjamin Petersonaf69fe22014-01-18 00:49:04 -0500684
Georg Brandl116aa622007-08-15 14:28:22 +0000685
686.. attribute:: Popen.stderr
687
Benjamin Peterson3d8814e2014-01-18 00:45:56 -0500688 If the *stderr* argument was :data:`PIPE`, this attribute is a readable
689 stream object as returned by :func:`open`. Reading from the stream provides
690 error output from the child process. If the *universal_newlines* argument was
691 ``True``, the stream is a text stream, otherwise it is a byte stream. If the
692 *stderr* argument was not :data:`PIPE`, this attribute is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000693
Gregory P. Smith6436cba2014-05-11 13:26:21 -0700694.. warning::
695
696 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
697 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
698 deadlocks due to any of the other OS pipe buffers filling up and blocking the
699 child process.
700
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702.. attribute:: Popen.pid
703
704 The process ID of the child process.
705
Georg Brandl58bfdca2010-03-21 09:50:49 +0000706 Note that if you set the *shell* argument to ``True``, this is the process ID
707 of the spawned shell.
708
Georg Brandl116aa622007-08-15 14:28:22 +0000709
710.. attribute:: Popen.returncode
711
Christian Heimes7f044312008-01-06 17:05:40 +0000712 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
713 by :meth:`communicate`). A ``None`` value indicates that the process
714 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000715
Christian Heimes7f044312008-01-06 17:05:40 +0000716 A negative value ``-N`` indicates that the child was terminated by signal
Gregory P. Smith8e0aa052014-05-11 13:28:35 -0700717 ``N`` (POSIX only).
Georg Brandl116aa622007-08-15 14:28:22 +0000718
719
Brian Curtine6242d72011-04-29 22:17:51 -0500720Windows Popen Helpers
721---------------------
722
723The :class:`STARTUPINFO` class and following constants are only available
724on Windows.
725
726.. class:: STARTUPINFO()
Brian Curtin73365dd2011-04-29 22:18:33 -0500727
Brian Curtine6242d72011-04-29 22:17:51 -0500728 Partial support of the Windows
Georg Brandl5d941342016-02-26 19:37:12 +0100729 `STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
Brian Curtine6242d72011-04-29 22:17:51 -0500730 structure is used for :class:`Popen` creation.
731
732 .. attribute:: dwFlags
733
Senthil Kumarana6bac952011-07-04 11:28:30 -0700734 A bit field that determines whether certain :class:`STARTUPINFO`
735 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500736
737 si = subprocess.STARTUPINFO()
738 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
739
740 .. attribute:: hStdInput
741
Senthil Kumarana6bac952011-07-04 11:28:30 -0700742 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
743 is the standard input handle for the process. If
744 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
745 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500746
747 .. attribute:: hStdOutput
748
Senthil Kumarana6bac952011-07-04 11:28:30 -0700749 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
750 is the standard output handle for the process. Otherwise, this attribute
751 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500752 buffer.
753
754 .. attribute:: hStdError
755
Senthil Kumarana6bac952011-07-04 11:28:30 -0700756 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
757 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500758 ignored and the default for standard error is the console window's buffer.
759
760 .. attribute:: wShowWindow
761
Senthil Kumarana6bac952011-07-04 11:28:30 -0700762 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500763 can be any of the values that can be specified in the ``nCmdShow``
764 parameter for the
Georg Brandl5d941342016-02-26 19:37:12 +0100765 `ShowWindow <https://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700766 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500767 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500768
Brian Curtine6242d72011-04-29 22:17:51 -0500769 :data:`SW_HIDE` is provided for this attribute. It is used when
770 :class:`Popen` is called with ``shell=True``.
771
772
773Constants
774^^^^^^^^^
775
776The :mod:`subprocess` module exposes the following constants.
777
778.. data:: STD_INPUT_HANDLE
779
780 The standard input device. Initially, this is the console input buffer,
781 ``CONIN$``.
782
783.. data:: STD_OUTPUT_HANDLE
784
785 The standard output device. Initially, this is the active console screen
786 buffer, ``CONOUT$``.
787
788.. data:: STD_ERROR_HANDLE
789
790 The standard error device. Initially, this is the active console screen
791 buffer, ``CONOUT$``.
792
793.. data:: SW_HIDE
794
795 Hides the window. Another window will be activated.
796
797.. data:: STARTF_USESTDHANDLES
798
799 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700800 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500801 contain additional information.
802
803.. data:: STARTF_USESHOWWINDOW
804
Senthil Kumarana6bac952011-07-04 11:28:30 -0700805 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500806 additional information.
807
808.. data:: CREATE_NEW_CONSOLE
809
810 The new process has a new console, instead of inheriting its parent's
811 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500812
Brian Curtin30401932011-04-29 22:20:57 -0500813.. data:: CREATE_NEW_PROCESS_GROUP
814
815 A :class:`Popen` ``creationflags`` parameter to specify that a new process
816 group will be created. This flag is necessary for using :func:`os.kill`
817 on the subprocess.
818
819 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
820
Gregory P. Smith6e730002015-04-14 16:14:25 -0700821.. _call-function-trio:
822
823Older high-level API
824--------------------
825
826Prior to Python 3.5, these three functions comprised the high level API to
827subprocess. You can now use :func:`run` in many cases, but lots of existing code
828calls these functions.
829
830.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
831
832 Run the command described by *args*. Wait for command to complete, then
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300833 return the :attr:`~Popen.returncode` attribute.
Gregory P. Smith6e730002015-04-14 16:14:25 -0700834
835 This is equivalent to::
836
837 run(...).returncode
838
839 (except that the *input* and *check* parameters are not supported)
840
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300841 The arguments shown above are merely the most
842 common ones. The full function signature is largely the
843 same as that of the :class:`Popen` constructor - this function passes all
844 supplied arguments other than *timeout* directly through to that interface.
845
Gregory P. Smith6e730002015-04-14 16:14:25 -0700846 .. note::
847
848 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
849 function. The child process will block if it generates enough
850 output to a pipe to fill up the OS pipe buffer as the pipes are
851 not being read from.
852
853 .. versionchanged:: 3.3
854 *timeout* was added.
855
856.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
857
858 Run command with arguments. Wait for command to complete. If the return
859 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
860 :exc:`CalledProcessError` object will have the return code in the
861 :attr:`~CalledProcessError.returncode` attribute.
862
863 This is equivalent to::
864
865 run(..., check=True)
866
867 (except that the *input* parameter is not supported)
868
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300869 The arguments shown above are merely the most
870 common ones. The full function signature is largely the
871 same as that of the :class:`Popen` constructor - this function passes all
872 supplied arguments other than *timeout* directly through to that interface.
873
Gregory P. Smith6e730002015-04-14 16:14:25 -0700874 .. note::
875
876 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this
877 function. The child process will block if it generates enough
878 output to a pipe to fill up the OS pipe buffer as the pipes are
879 not being read from.
880
881 .. versionchanged:: 3.3
882 *timeout* was added.
883
884
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300885.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False, timeout=None)
Gregory P. Smith6e730002015-04-14 16:14:25 -0700886
887 Run command with arguments and return its output.
888
889 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
890 :exc:`CalledProcessError` object will have the return code in the
891 :attr:`~CalledProcessError.returncode` attribute and any output in the
892 :attr:`~CalledProcessError.output` attribute.
893
894 This is equivalent to::
895
896 run(..., check=True, stdout=PIPE).stdout
897
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300898 The arguments shown above are merely the most common ones.
899 The full function signature is largely the same as that of :func:`run` -
900 most arguments are passed directly through to that interface.
901 However, explicitly passing ``input=None`` to inherit the parent's
902 standard input file handle is not supported.
903
Gregory P. Smith6e730002015-04-14 16:14:25 -0700904 By default, this function will return the data as encoded bytes. The actual
905 encoding of the output data may depend on the command being invoked, so the
906 decoding to text will often need to be handled at the application level.
907
908 This behaviour may be overridden by setting *universal_newlines* to
909 ``True`` as described above in :ref:`frequently-used-arguments`.
910
911 To also capture standard error in the result, use
912 ``stderr=subprocess.STDOUT``::
913
914 >>> subprocess.check_output(
915 ... "ls non_existent_file; exit 0",
916 ... stderr=subprocess.STDOUT,
917 ... shell=True)
918 'ls: non_existent_file: No such file or directory\n'
919
920 .. versionadded:: 3.1
921
922 .. versionchanged:: 3.3
923 *timeout* was added.
924
925 .. versionchanged:: 3.4
Berker Peksagbf1d4b62015-07-25 14:27:07 +0300926 Support for the *input* keyword argument was added.
Brian Curtine6242d72011-04-29 22:17:51 -0500927
Benjamin Petersondcf97b92008-07-02 17:30:14 +0000928.. _subprocess-replacements:
929
Ezio Melotti402f75d2012-11-08 10:07:10 +0200930Replacing Older Functions with the :mod:`subprocess` Module
931-----------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000932
Nick Coghlanc29248f2011-11-08 20:49:23 +1000933In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +0000934
935.. note::
936
Nick Coghlanc29248f2011-11-08 20:49:23 +1000937 All "a" functions in this section fail (more or less) silently if the
938 executed program cannot be found; the "b" replacements raise :exc:`OSError`
939 instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000940
Nick Coghlanc29248f2011-11-08 20:49:23 +1000941 In addition, the replacements using :func:`check_output` will fail with a
942 :exc:`CalledProcessError` if the requested operation produces a non-zero
Serhiy Storchaka9e0ae532013-08-24 00:23:38 +0300943 return code. The output is still available as the
944 :attr:`~CalledProcessError.output` attribute of the raised exception.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000945
946In the following examples, we assume that the relevant functions have already
Ezio Melotti402f75d2012-11-08 10:07:10 +0200947been imported from the :mod:`subprocess` module.
Georg Brandl116aa622007-08-15 14:28:22 +0000948
949
950Replacing /bin/sh shell backquote
951^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
952
Martin Panter1050d2d2016-07-26 11:18:21 +0200953.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +0000954
955 output=`mycmd myarg`
Georg Brandl116aa622007-08-15 14:28:22 +0000956
Martin Panter1050d2d2016-07-26 11:18:21 +0200957becomes::
958
959 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +0000960
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000961Replacing shell pipeline
962^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000963
Martin Panter1050d2d2016-07-26 11:18:21 +0200964.. code-block:: bash
Georg Brandl116aa622007-08-15 14:28:22 +0000965
966 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +0200967
968becomes::
969
Georg Brandl116aa622007-08-15 14:28:22 +0000970 p1 = Popen(["dmesg"], stdout=PIPE)
971 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000972 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +0000973 output = p2.communicate()[0]
974
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000975The p1.stdout.close() call after starting the p2 is important in order for p1
976to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +0000977
Nick Coghlanc29248f2011-11-08 20:49:23 +1000978Alternatively, for trusted input, the shell's own pipeline support may still
Martin Panter1050d2d2016-07-26 11:18:21 +0200979be used directly:
980
981.. code-block:: bash
Nick Coghlanc29248f2011-11-08 20:49:23 +1000982
983 output=`dmesg | grep hda`
Martin Panter1050d2d2016-07-26 11:18:21 +0200984
985becomes::
986
Nick Coghlanc29248f2011-11-08 20:49:23 +1000987 output=check_output("dmesg | grep hda", shell=True)
988
989
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000990Replacing :func:`os.system`
991^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000992
993::
994
995 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +1000996 # becomes
997 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000998
999Notes:
1000
1001* Calling the program through the shell is usually not required.
1002
Georg Brandl116aa622007-08-15 14:28:22 +00001003A more realistic example would look like this::
1004
1005 try:
1006 retcode = call("mycmd" + " myarg", shell=True)
1007 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +00001008 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001009 else:
Collin Winterc79461b2007-09-01 23:34:30 +00001010 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001011 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +00001012 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +00001013
1014
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001015Replacing the :func:`os.spawn <os.spawnl>` family
1016^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001017
1018P_NOWAIT example::
1019
1020 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
1021 ==>
1022 pid = Popen(["/bin/mycmd", "myarg"]).pid
1023
1024P_WAIT example::
1025
1026 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
1027 ==>
1028 retcode = call(["/bin/mycmd", "myarg"])
1029
1030Vector example::
1031
1032 os.spawnvp(os.P_NOWAIT, path, args)
1033 ==>
1034 Popen([path] + args[1:])
1035
1036Environment example::
1037
1038 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
1039 ==>
1040 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
1041
1042
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001043
1044Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
1045^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +00001046
1047::
1048
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001049 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001050 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001051 p = Popen(cmd, shell=True, bufsize=bufsize,
1052 stdin=PIPE, stdout=PIPE, close_fds=True)
1053 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +00001054
1055::
1056
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001057 (child_stdin,
1058 child_stdout,
1059 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +00001060 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001061 p = Popen(cmd, shell=True, bufsize=bufsize,
1062 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
1063 (child_stdin,
1064 child_stdout,
1065 child_stderr) = (p.stdin, p.stdout, p.stderr)
1066
1067::
1068
1069 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
1070 ==>
1071 p = Popen(cmd, shell=True, bufsize=bufsize,
1072 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
1073 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
1074
1075Return code handling translates as follows::
1076
1077 pipe = os.popen(cmd, 'w')
1078 ...
1079 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +00001080 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001081 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001082 ==>
R David Murray17227a72015-09-04 10:01:19 -04001083 process = Popen(cmd, stdin=PIPE)
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001084 ...
1085 process.stdin.close()
1086 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +00001087 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001088
1089
1090Replacing functions from the :mod:`popen2` module
1091^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1092
1093.. note::
1094
1095 If the cmd argument to popen2 functions is a string, the command is executed
1096 through /bin/sh. If it is a list, the command is directly executed.
1097
1098::
1099
1100 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
1101 ==>
R David Murrayae9d1932014-05-14 10:09:52 -04001102 p = Popen("somestring", shell=True, bufsize=bufsize,
Benjamin Peterson87c8d872009-06-11 22:54:11 +00001103 stdin=PIPE, stdout=PIPE, close_fds=True)
1104 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1105
1106::
1107
1108 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
1109 ==>
1110 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
1111 stdin=PIPE, stdout=PIPE, close_fds=True)
1112 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1113
1114:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
1115:class:`subprocess.Popen`, except that:
1116
1117* :class:`Popen` raises an exception if the execution fails.
1118
1119* the *capturestderr* argument is replaced with the *stderr* argument.
1120
1121* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
1122
1123* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +00001124 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
1125 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +03001126
Nick Coghlanc29248f2011-11-08 20:49:23 +10001127
Nick Coghlanc29248f2011-11-08 20:49:23 +10001128Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001129---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001130
1131This module also provides the following legacy functions from the 2.x
1132``commands`` module. These operations implicitly invoke the system shell and
1133none of the guarantees described above regarding security and exception
1134handling consistency are valid for these functions.
1135
1136.. function:: getstatusoutput(cmd)
1137
1138 Return ``(status, output)`` of executing *cmd* in a shell.
1139
Tim Golden60798142013-11-05 12:57:25 +00001140 Execute the string *cmd* in a shell with :meth:`Popen.check_output` and
1141 return a 2-tuple ``(status, output)``. Universal newlines mode is used;
1142 see the notes on :ref:`frequently-used-arguments` for more details.
Tim Golden3a2abb52013-11-03 18:24:50 +00001143
1144 A trailing newline is stripped from the output.
1145 The exit status for the command can be interpreted
Nick Coghlanc29248f2011-11-08 20:49:23 +10001146 according to the rules for the C function :c:func:`wait`. Example::
1147
1148 >>> subprocess.getstatusoutput('ls /bin/ls')
1149 (0, '/bin/ls')
1150 >>> subprocess.getstatusoutput('cat /bin/junk')
1151 (256, 'cat: /bin/junk: No such file or directory')
1152 >>> subprocess.getstatusoutput('/bin/junk')
1153 (256, 'sh: /bin/junk: not found')
1154
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001155 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001156
1157 .. versionchanged:: 3.3.4
1158 Windows support added
Nick Coghlanc29248f2011-11-08 20:49:23 +10001159
1160
1161.. function:: getoutput(cmd)
1162
1163 Return output (stdout and stderr) of executing *cmd* in a shell.
1164
1165 Like :func:`getstatusoutput`, except the exit status is ignored and the return
1166 value is a string containing the command's output. Example::
1167
1168 >>> subprocess.getoutput('ls /bin/ls')
1169 '/bin/ls'
1170
Gregory P. Smith8e0aa052014-05-11 13:28:35 -07001171 Availability: POSIX & Windows
R David Murray95b696a2014-03-07 20:04:17 -05001172
1173 .. versionchanged:: 3.3.4
1174 Windows support added
Nick Coghlanc29248f2011-11-08 20:49:23 +10001175
Nick Coghlan32e4a582011-11-08 21:50:58 +10001176
Eli Bendersky046a7642011-04-15 07:23:26 +03001177Notes
1178-----
1179
1180.. _converting-argument-sequence:
1181
1182Converting an argument sequence to a string on Windows
1183^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1184
1185On Windows, an *args* sequence is converted to a string that can be parsed
1186using the following rules (which correspond to the rules used by the MS C
1187runtime):
1188
11891. Arguments are delimited by white space, which is either a
1190 space or a tab.
1191
11922. A string surrounded by double quotation marks is
1193 interpreted as a single argument, regardless of white space
1194 contained within. A quoted string can be embedded in an
1195 argument.
1196
11973. A double quotation mark preceded by a backslash is
1198 interpreted as a literal double quotation mark.
1199
12004. Backslashes are interpreted literally, unless they
1201 immediately precede a double quotation mark.
1202
12035. If backslashes immediately precede a double quotation mark,
1204 every pair of backslashes is interpreted as a literal
1205 backslash. If the number of backslashes is odd, the last
1206 backslash escapes the next double quotation mark as
1207 described in rule 3.
1208
Eli Benderskyd2112312011-04-15 07:26:28 +03001209
Éric Araujo9bce3112011-07-27 18:29:31 +02001210.. seealso::
1211
1212 :mod:`shlex`
1213 Module which provides function to parse and escape command lines.