blob: 899bd7c26bc0328a7f6c3e9304469e4084e415af [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`subprocess` --- Subprocess management
2===========================================
3
4.. module:: subprocess
5 :synopsis: Subprocess management.
6.. moduleauthor:: Peter Åstrand <astrand@lysator.liu.se>
7.. sectionauthor:: Peter Åstrand <astrand@lysator.liu.se>
8
9
Georg Brandl116aa622007-08-15 14:28:22 +000010The :mod:`subprocess` module allows you to spawn new processes, connect to their
11input/output/error pipes, and obtain their return codes. This module intends to
12replace several other, older modules and functions, such as::
13
14 os.system
15 os.spawn*
Georg Brandl116aa622007-08-15 14:28:22 +000016
17Information about how the :mod:`subprocess` module can be used to replace these
18modules and functions can be found in the following sections.
19
Benjamin Peterson41181742008-07-02 20:22:54 +000020.. seealso::
21
22 :pep:`324` -- PEP proposing the subprocess module
23
Georg Brandl116aa622007-08-15 14:28:22 +000024
25Using the subprocess Module
26---------------------------
27
Nick Coghlanc29248f2011-11-08 20:49:23 +100028The recommended approach to invoking subprocesses is to use the following
29convenience functions for all use cases they can handle. For more advanced
30use cases, the underlying :class:`Popen` interface can be used directly.
31
32
33.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
34
35 Run the command described by *args*. Wait for command to complete, then
36 return the :attr:`returncode` attribute.
37
38 The arguments shown above are merely the most common ones, described below
39 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
40 the abbreviated signature). The full function signature is the same as
41 that of the :class:`Popen` constructor - this functions passes all
42 supplied arguments directly through to that interface.
43
44 Examples::
45
46 >>> subprocess.call(["ls", "-l"])
47 0
48
49 >>> subprocess.call("exit 1", shell=True)
50 1
51
52 .. warning::
53
54 Invoking the system shell with ``shell=True`` can be a security hazard
55 if combined with untrusted input. See the warning under
56 :ref:`frequently-used-arguments` for details.
57
58 .. note::
59
60 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
61 the pipes are not being read in the current process, the child
62 process may block if it generates enough output to a pipe to fill up
63 the OS pipe buffer.
64
65
66.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
67
68 Run command with arguments. Wait for command to complete. If the return
69 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
70 :exc:`CalledProcessError` object will have the return code in the
71 :attr:`returncode` attribute.
72
73 The arguments shown above are merely the most common ones, described below
74 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
75 the abbreviated signature). The full function signature is the same as
76 that of the :class:`Popen` constructor - this functions passes all
77 supplied arguments directly through to that interface.
78
79 Examples::
80
81 >>> subprocess.check_call(["ls", "-l"])
82 0
83
84 >>> subprocess.check_call("exit 1", shell=True)
85 Traceback (most recent call last):
86 ...
87 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
88
89 .. versionadded:: 2.5
90
91 .. warning::
92
93 Invoking the system shell with ``shell=True`` can be a security hazard
94 if combined with untrusted input. See the warning under
95 :ref:`frequently-used-arguments` for details.
96
97 .. note::
98
99 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
100 the pipes are not being read in the current process, the child
101 process may block if it generates enough output to a pipe to fill up
102 the OS pipe buffer.
103
104
105.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
106
107 Run command with arguments and return its output as a byte string.
108
109 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
110 :exc:`CalledProcessError` object will have the return code in the
111 :attr:`returncode` attribute and any output in the :attr:`output`
112 attribute.
113
114 The arguments shown above are merely the most common ones, described below
115 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
116 the abbreviated signature). The full function signature is largely the
117 same as that of the :class:`Popen` constructor, except that *stdout* is
118 not permitted as it is used internally. All other supplied arguments are
119 passed directly through to the :class:`Popen` constructor.
120
121 Examples::
122
123 >>> subprocess.check_output(["echo", "Hello World!"])
124 b'Hello World!\n'
125
126 >>> subprocess.check_output(["echo", "Hello World!"], universal_newlines=True)
127 'Hello World!\n'
128
129 >>> subprocess.check_output("exit 1", shell=True)
130 Traceback (most recent call last):
131 ...
132 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
133
134 By default, this function will return the data as encoded bytes. The actual
135 encoding of the output data may depend on the command being invoked, so the
136 decoding to text will often need to be handled at the application level.
137
138 This behaviour may be overridden by setting *universal_newlines* to
Andrew Svetlov50be4522012-08-13 22:09:04 +0300139 ``True`` as described below in :ref:`frequently-used-arguments`.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000140
141 To also capture standard error in the result, use
142 ``stderr=subprocess.STDOUT``::
143
144 >>> subprocess.check_output(
145 ... "ls non_existent_file; exit 0",
146 ... stderr=subprocess.STDOUT,
147 ... shell=True)
148 'ls: non_existent_file: No such file or directory\n'
149
150 .. versionadded:: 2.7
151
152 .. warning::
153
154 Invoking the system shell with ``shell=True`` can be a security hazard
155 if combined with untrusted input. See the warning under
156 :ref:`frequently-used-arguments` for details.
157
158 .. note::
159
160 Do not use ``stderr=PIPE`` with this function. As the pipe is not being
161 read in the current process, the child process may block if it
162 generates enough output to the pipe to fill up the OS pipe buffer.
163
164
165.. data:: PIPE
166
167 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
168 to :class:`Popen` and indicates that a pipe to the standard stream should be
169 opened.
170
171
172.. data:: STDOUT
173
174 Special value that can be used as the *stderr* argument to :class:`Popen` and
175 indicates that standard error should go into the same handle as standard
176 output.
177
178
Andrew Svetloveec64202012-08-09 15:20:45 +0300179.. exception:: CalledProcessError
180
181 Exception raised when a process run by :func:`check_call` or
182 :func:`check_output` returns a non-zero exit status.
183
184 .. attribute:: returncode
185
186 Exit status of the child process.
187
188 .. attribute:: cmd
189
190 Command that was used to spawn the child process.
191
192 .. attribute:: output
193
194 Output of the child process if this exception is raised by
195 :func:`check_output`. Otherwise, ``None``.
196
197
198
Nick Coghlanc29248f2011-11-08 20:49:23 +1000199.. _frequently-used-arguments:
200
201Frequently Used Arguments
202^^^^^^^^^^^^^^^^^^^^^^^^^
203
204To support a wide variety of use cases, the :class:`Popen` constructor (and
205the convenience functions) accept a large number of optional arguments. For
206most typical use cases, many of these arguments can be safely left at their
207default values. The arguments that are most commonly needed are:
208
209 *args* is required for all calls and should be a string, or a sequence of
210 program arguments. Providing a sequence of arguments is generally
211 preferred, as it allows the module to take care of any required escaping
212 and quoting of arguments (e.g. to permit spaces in file names). If passing
213 a single string, either *shell* must be :const:`True` (see below) or else
214 the string must simply name the program to be executed without specifying
215 any arguments.
216
217 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
218 standard output and standard error file handles, respectively. Valid values
219 are :data:`PIPE`, an existing file descriptor (a positive integer), an
220 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
221 to the child should be created. With the default settings of ``None``, no
222 redirection will occur; the child's file handles will be inherited from the
223 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
224 the stderr data from the child process should be captured into the same file
225 handle as for stdout.
226
R David Murray1b00f252012-08-15 10:43:58 -0400227 .. index::
228 single: universal newlines; subprocess module
229
Andrew Svetlov50be4522012-08-13 22:09:04 +0300230 If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
R David Murray1b00f252012-08-15 10:43:58 -0400231 and *stderr* will be opened as text streams in :term:`universal newlines`
232 mode using the encoding returned by :func:`locale.getpreferredencoding`.
Andrew Svetlov50be4522012-08-13 22:09:04 +0300233 For *stdin*, line ending characters ``'\n'`` in the input will be converted
234 to the default line separator :data:`os.linesep`. For *stdout* and
235 *stderr*, all line endings in the output will be converted to ``'\n'``.
236 For more information see the documentation of the :class:`io.TextIOWrapper`
237 class when the *newline* argument to its constructor is ``None``.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000238
Andrew Svetlov50be4522012-08-13 22:09:04 +0300239 .. note::
240
241 The *universal_newlines* feature is supported only if Python is built
242 with universal newline support (the default). Also, the newlines
243 attribute of the file objects :attr:`Popen.stdin`, :attr:`Popen.stdout`
244 and :attr:`Popen.stderr` are not updated by the
245 :meth:`Popen.communicate` method.
246
247 If *shell* is ``True``, the specified command will be executed through
Nick Coghlanc29248f2011-11-08 20:49:23 +1000248 the shell. This can be useful if you are using Python primarily for the
249 enhanced control flow it offers over most system shells and still want
250 access to other shell features such as filename wildcards, shell pipes and
251 environment variable expansion.
252
253 .. warning::
254
255 Executing shell commands that incorporate unsanitized input from an
256 untrusted source makes a program vulnerable to `shell injection
257 <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
258 a serious security flaw which can result in arbitrary command execution.
259 For this reason, the use of *shell=True* is **strongly discouraged** in cases
260 where the command string is constructed from external input::
261
262 >>> from subprocess import call
263 >>> filename = input("What file would you like to display?\n")
264 What file would you like to display?
265 non_existent; rm -rf / #
266 >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
267
268 ``shell=False`` disables all shell based features, but does not suffer
269 from this vulnerability; see the Note in the :class:`Popen` constructor
270 documentation for helpful hints in getting ``shell=False`` to work.
271
272These options, along with all of the other options, are described in more
273detail in the :class:`Popen` constructor documentation.
274
275
Sandro Tosi1526ad12011-12-25 11:27:37 +0100276Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100277^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000278
279The underlying process creation and management in this module is handled by
280the :class:`Popen` class. It offers a lot of flexibility so that developers
281are able to handle the less common cases not covered by the convenience
282functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000283
284
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000285.. class:: Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())
Georg Brandl116aa622007-08-15 14:28:22 +0000286
287 Arguments are:
288
Benjamin Petersond18de0e2008-07-31 20:21:46 +0000289 *args* should be a string, or a sequence of program arguments. The program
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000290 to execute is normally the first item in the args sequence or the string if
291 a string is given, but can be explicitly set by using the *executable*
292 argument. When *executable* is given, the first item in the args sequence
293 is still treated by most programs as the command name, which can then be
294 different from the actual executable name. On Unix, it becomes the display
295 name for the executing program in utilities such as :program:`ps`.
Georg Brandl116aa622007-08-15 14:28:22 +0000296
297 On Unix, with *shell=False* (default): In this case, the Popen class uses
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000298 :meth:`os.execvp` like behavior to execute the child program.
299 *args* should normally be a
R. David Murray5973e4d2010-02-04 16:41:57 +0000300 sequence. If a string is specified for *args*, it will be used as the name
301 or path of the program to execute; this will only work if the program is
302 being given no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000303
R. David Murray5973e4d2010-02-04 16:41:57 +0000304 .. note::
305
306 :meth:`shlex.split` can be useful when determining the correct
307 tokenization for *args*, especially in complex cases::
308
309 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000310 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000311 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
312 >>> args = shlex.split(command_line)
313 >>> print(args)
314 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
315 >>> p = subprocess.Popen(args) # Success!
316
317 Note in particular that options (such as *-input*) and arguments (such
318 as *eggs.txt*) that are separated by whitespace in the shell go in separate
319 list elements, while arguments that need quoting or backslash escaping when
320 used in the shell (such as filenames containing spaces or the *echo* command
321 shown above) are single list elements.
322
323 On Unix, with *shell=True*: If args is a string, it specifies the command
324 string to execute through the shell. This means that the string must be
325 formatted exactly as it would be when typed at the shell prompt. This
326 includes, for example, quoting or backslash escaping filenames with spaces in
327 them. If *args* is a sequence, the first item specifies the command string, and
328 any additional items will be treated as additional arguments to the shell
329 itself. That is to say, *Popen* does the equivalent of::
330
331 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000332
R. David Murrayc7399d02010-11-12 00:35:31 +0000333 .. warning::
334
Nick Coghlanc29248f2011-11-08 20:49:23 +1000335 Enabling this option can be a security hazard if combined with untrusted
336 input. See the warning under :ref:`frequently-used-arguments`
337 for details.
R. David Murrayc7399d02010-11-12 00:35:31 +0000338
Eli Bendersky046a7642011-04-15 07:23:26 +0300339 On Windows: the :class:`Popen` class uses CreateProcess() to execute the
340 child program, which operates on strings. If *args* is a sequence, it will
341 be converted to a string in a manner described in
342 :ref:`converting-argument-sequence`.
Georg Brandl116aa622007-08-15 14:28:22 +0000343
344 *bufsize*, if given, has the same meaning as the corresponding argument to the
345 built-in open() function: :const:`0` means unbuffered, :const:`1` means line
346 buffered, any other positive value means use a buffer of (approximately) that
347 size. A negative *bufsize* means to use the system default, which usually means
348 fully buffered. The default value for *bufsize* is :const:`0` (unbuffered).
349
Antoine Pitrou4b876202010-06-02 17:10:49 +0000350 .. note::
351
352 If you experience performance issues, it is recommended that you try to
353 enable buffering by setting *bufsize* to either -1 or a large enough
354 positive value (such as 4096).
355
Georg Brandl116aa622007-08-15 14:28:22 +0000356 The *executable* argument specifies the program to execute. It is very seldom
357 needed: Usually, the program to execute is defined by the *args* argument. If
358 ``shell=True``, the *executable* argument specifies which shell to use. On Unix,
359 the default shell is :file:`/bin/sh`. On Windows, the default shell is
Alexandre Vassalotti260484d2009-07-17 11:43:26 +0000360 specified by the :envvar:`COMSPEC` environment variable. The only reason you
361 would need to specify ``shell=True`` on Windows is where the command you
362 wish to execute is actually built in to the shell, eg ``dir``, ``copy``.
363 You don't need ``shell=True`` to run a batch file, nor to run a console-based
364 executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000365
Nick Coghlanc29248f2011-11-08 20:49:23 +1000366 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000367 standard output and standard error file handles, respectively. Valid values
368 are :data:`PIPE`, an existing file descriptor (a positive integer), an
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000369 existing :term:`file object`, and ``None``. :data:`PIPE` indicates that a
Nick Coghlanc29248f2011-11-08 20:49:23 +1000370 new pipe to the child should be created. With the default settings of
371 ``None``, no redirection will occur; the child's file handles will be
372 inherited from the parent. Additionally, *stderr* can be :data:`STDOUT`,
373 which indicates that the stderr data from the applications should be
374 captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000375
376 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000377 child process just before the child is executed.
378 (Unix only)
379
380 .. warning::
381
382 The *preexec_fn* parameter is not safe to use in the presence of threads
383 in your application. The child process could deadlock before exec is
384 called.
385 If you must use it, keep it trivial! Minimize the number of libraries
386 you call into.
387
388 .. note::
389
390 If you need to modify the environment for the child use the *env*
391 parameter rather than doing it in a *preexec_fn*.
392 The *start_new_session* parameter can take the place of a previously
393 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000394
395 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
396 :const:`2` will be closed before the child process is executed. (Unix only).
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000397 The default varies by platform: Always true on Unix. On Windows it is
398 true when *stdin*/*stdout*/*stderr* are :const:`None`, false otherwise.
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000399 On Windows, if *close_fds* is true then no handles will be inherited by the
Georg Brandl116aa622007-08-15 14:28:22 +0000400 child process. Note that on Windows, you cannot set *close_fds* to true and
401 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
402
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000403 .. versionchanged:: 3.2
404 The default for *close_fds* was changed from :const:`False` to
405 what is described above.
406
407 *pass_fds* is an optional sequence of file descriptors to keep open
408 between the parent and child. Providing any *pass_fds* forces
409 *close_fds* to be :const:`True`. (Unix only)
410
411 .. versionadded:: 3.2
412 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414 If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
415 before it is executed. Note that this directory is not considered when
416 searching the executable, so you can't specify the program's path relative to
417 *cwd*.
418
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000419 If *restore_signals* is True (the default) all signals that Python has set to
420 SIG_IGN are restored to SIG_DFL in the child process before the exec.
421 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
422 (Unix only)
423
424 .. versionchanged:: 3.2
425 *restore_signals* was added.
426
427 If *start_new_session* is True the setsid() system call will be made in the
428 child process prior to the execution of the subprocess. (Unix only)
429
430 .. versionchanged:: 3.2
431 *start_new_session* was added.
432
Christian Heimesa342c012008-04-20 21:01:16 +0000433 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000434 variables for the new process; these are used instead of the default
435 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000436
R. David Murray1055e892009-04-16 18:15:32 +0000437 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000438
Georg Brandl2708f3a2009-12-20 14:38:23 +0000439 If specified, *env* must provide any variables required for the program to
440 execute. On Windows, in order to run a `side-by-side assembly`_ the
441 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000442
R. David Murray1055e892009-04-16 18:15:32 +0000443 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
444
Andrew Svetlov50be4522012-08-13 22:09:04 +0300445 If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
R David Murray1b00f252012-08-15 10:43:58 -0400446 and *stderr* are opened as text streams in universal newlines mode, as
Andrew Svetlov50be4522012-08-13 22:09:04 +0300447 described above in :ref:`frequently-used-arguments`.
Georg Brandl116aa622007-08-15 14:28:22 +0000448
Brian Curtine6242d72011-04-29 22:17:51 -0500449 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
450 passed to the underlying ``CreateProcess`` function.
Brian Curtin30401932011-04-29 22:20:57 -0500451 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
452 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl116aa622007-08-15 14:28:22 +0000453
Gregory P. Smithc9557af2011-05-11 22:18:23 -0700454 Popen objects are supported as context managers via the :keyword:`with` statement:
455 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000456 ::
457
458 with Popen(["ifconfig"], stdout=PIPE) as proc:
459 log.write(proc.stdout.read())
460
461 .. versionchanged:: 3.2
462 Added context manager support.
463
Georg Brandl116aa622007-08-15 14:28:22 +0000464
Georg Brandl116aa622007-08-15 14:28:22 +0000465Exceptions
466^^^^^^^^^^
467
468Exceptions raised in the child process, before the new program has started to
469execute, will be re-raised in the parent. Additionally, the exception object
470will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000471containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000472
473The most common exception raised is :exc:`OSError`. This occurs, for example,
474when trying to execute a non-existent file. Applications should prepare for
475:exc:`OSError` exceptions.
476
477A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
478arguments.
479
Nick Coghlanc29248f2011-11-08 20:49:23 +1000480:func:`check_call` and :func:`check_output` will raise
481:exc:`CalledProcessError` if the called process returns a non-zero return
482code.
Georg Brandl116aa622007-08-15 14:28:22 +0000483
484
485Security
486^^^^^^^^
487
Nick Coghlanc29248f2011-11-08 20:49:23 +1000488Unlike some other popen functions, this implementation will never call a
489system shell implicitly. This means that all characters, including shell
490metacharacters, can safely be passed to child processes. Obviously, if the
491shell is invoked explicitly, then it is the application's responsibility to
492ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl116aa622007-08-15 14:28:22 +0000493
494
495Popen Objects
496-------------
497
498Instances of the :class:`Popen` class have the following methods:
499
500
501.. method:: Popen.poll()
502
Christian Heimes7f044312008-01-06 17:05:40 +0000503 Check if child process has terminated. Set and return :attr:`returncode`
504 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000505
506
507.. method:: Popen.wait()
508
Christian Heimes7f044312008-01-06 17:05:40 +0000509 Wait for child process to terminate. Set and return :attr:`returncode`
510 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000511
Georg Brandl734e2682008-08-12 08:18:18 +0000512 .. warning::
513
Philip Jenveyb0896842009-12-03 02:29:36 +0000514 This will deadlock when using ``stdout=PIPE`` and/or
515 ``stderr=PIPE`` and the child process generates enough output to
516 a pipe such that it blocks waiting for the OS pipe buffer to
517 accept more data. Use :meth:`communicate` to avoid that.
Georg Brandl734e2682008-08-12 08:18:18 +0000518
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520.. method:: Popen.communicate(input=None)
521
522 Interact with process: Send data to stdin. Read data from stdout and stderr,
523 until end-of-file is reached. Wait for process to terminate. The optional
Georg Brandle11787a2008-07-01 19:10:52 +0000524 *input* argument should be a byte string to be sent to the child process, or
Georg Brandl116aa622007-08-15 14:28:22 +0000525 ``None``, if no data should be sent to the child.
526
Georg Brandlaf265f42008-12-07 15:06:20 +0000527 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000528
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000529 Note that if you want to send data to the process's stdin, you need to create
530 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
531 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
532 ``stderr=PIPE`` too.
533
Christian Heimes7f044312008-01-06 17:05:40 +0000534 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000535
Christian Heimes7f044312008-01-06 17:05:40 +0000536 The data read is buffered in memory, so do not use this method if the data
537 size is large or unlimited.
538
Georg Brandl116aa622007-08-15 14:28:22 +0000539
Christian Heimesa342c012008-04-20 21:01:16 +0000540.. method:: Popen.send_signal(signal)
541
542 Sends the signal *signal* to the child.
543
544 .. note::
545
Brian Curtineb24d742010-04-12 17:16:38 +0000546 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000547 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000548 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000549
Christian Heimesa342c012008-04-20 21:01:16 +0000550
551.. method:: Popen.terminate()
552
553 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000554 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000555 to stop the child.
556
Christian Heimesa342c012008-04-20 21:01:16 +0000557
558.. method:: Popen.kill()
559
560 Kills the child. On Posix OSs the function sends SIGKILL to the child.
561 On Windows :meth:`kill` is an alias for :meth:`terminate`.
562
Christian Heimesa342c012008-04-20 21:01:16 +0000563
Georg Brandl116aa622007-08-15 14:28:22 +0000564The following attributes are also available:
565
Georg Brandl734e2682008-08-12 08:18:18 +0000566.. warning::
567
Georg Brandle720c0a2009-04-27 16:20:50 +0000568 Use :meth:`communicate` rather than :attr:`.stdin.write <stdin>`,
569 :attr:`.stdout.read <stdout>` or :attr:`.stderr.read <stderr>` to avoid
570 deadlocks due to any of the other OS pipe buffers filling up and blocking the
571 child process.
Georg Brandl734e2682008-08-12 08:18:18 +0000572
573
Georg Brandl116aa622007-08-15 14:28:22 +0000574.. attribute:: Popen.stdin
575
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000576 If the *stdin* argument was :data:`PIPE`, this attribute is a :term:`file
577 object` that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579
580.. attribute:: Popen.stdout
581
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000582 If the *stdout* argument was :data:`PIPE`, this attribute is a :term:`file
583 object` that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000584
585
586.. attribute:: Popen.stderr
587
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000588 If the *stderr* argument was :data:`PIPE`, this attribute is a :term:`file
589 object` that provides error output from the child process. Otherwise, it is
Georg Brandlaf265f42008-12-07 15:06:20 +0000590 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000591
592
593.. attribute:: Popen.pid
594
595 The process ID of the child process.
596
Georg Brandl58bfdca2010-03-21 09:50:49 +0000597 Note that if you set the *shell* argument to ``True``, this is the process ID
598 of the spawned shell.
599
Georg Brandl116aa622007-08-15 14:28:22 +0000600
601.. attribute:: Popen.returncode
602
Christian Heimes7f044312008-01-06 17:05:40 +0000603 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
604 by :meth:`communicate`). A ``None`` value indicates that the process
605 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000606
Christian Heimes7f044312008-01-06 17:05:40 +0000607 A negative value ``-N`` indicates that the child was terminated by signal
608 ``N`` (Unix only).
Georg Brandl116aa622007-08-15 14:28:22 +0000609
610
Brian Curtine6242d72011-04-29 22:17:51 -0500611Windows Popen Helpers
612---------------------
613
614The :class:`STARTUPINFO` class and following constants are only available
615on Windows.
616
617.. class:: STARTUPINFO()
Brian Curtin73365dd2011-04-29 22:18:33 -0500618
Brian Curtine6242d72011-04-29 22:17:51 -0500619 Partial support of the Windows
620 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
621 structure is used for :class:`Popen` creation.
622
623 .. attribute:: dwFlags
624
Senthil Kumarana6bac952011-07-04 11:28:30 -0700625 A bit field that determines whether certain :class:`STARTUPINFO`
626 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500627
628 si = subprocess.STARTUPINFO()
629 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
630
631 .. attribute:: hStdInput
632
Senthil Kumarana6bac952011-07-04 11:28:30 -0700633 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
634 is the standard input handle for the process. If
635 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
636 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500637
638 .. attribute:: hStdOutput
639
Senthil Kumarana6bac952011-07-04 11:28:30 -0700640 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
641 is the standard output handle for the process. Otherwise, this attribute
642 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500643 buffer.
644
645 .. attribute:: hStdError
646
Senthil Kumarana6bac952011-07-04 11:28:30 -0700647 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
648 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500649 ignored and the default for standard error is the console window's buffer.
650
651 .. attribute:: wShowWindow
652
Senthil Kumarana6bac952011-07-04 11:28:30 -0700653 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500654 can be any of the values that can be specified in the ``nCmdShow``
655 parameter for the
656 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700657 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500658 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500659
Brian Curtine6242d72011-04-29 22:17:51 -0500660 :data:`SW_HIDE` is provided for this attribute. It is used when
661 :class:`Popen` is called with ``shell=True``.
662
663
664Constants
665^^^^^^^^^
666
667The :mod:`subprocess` module exposes the following constants.
668
669.. data:: STD_INPUT_HANDLE
670
671 The standard input device. Initially, this is the console input buffer,
672 ``CONIN$``.
673
674.. data:: STD_OUTPUT_HANDLE
675
676 The standard output device. Initially, this is the active console screen
677 buffer, ``CONOUT$``.
678
679.. data:: STD_ERROR_HANDLE
680
681 The standard error device. Initially, this is the active console screen
682 buffer, ``CONOUT$``.
683
684.. data:: SW_HIDE
685
686 Hides the window. Another window will be activated.
687
688.. data:: STARTF_USESTDHANDLES
689
690 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700691 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500692 contain additional information.
693
694.. data:: STARTF_USESHOWWINDOW
695
Senthil Kumarana6bac952011-07-04 11:28:30 -0700696 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500697 additional information.
698
699.. data:: CREATE_NEW_CONSOLE
700
701 The new process has a new console, instead of inheriting its parent's
702 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500703
Brian Curtine6242d72011-04-29 22:17:51 -0500704 This flag is always set when :class:`Popen` is created with ``shell=True``.
705
Brian Curtin30401932011-04-29 22:20:57 -0500706.. data:: CREATE_NEW_PROCESS_GROUP
707
708 A :class:`Popen` ``creationflags`` parameter to specify that a new process
709 group will be created. This flag is necessary for using :func:`os.kill`
710 on the subprocess.
711
712 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
713
Brian Curtine6242d72011-04-29 22:17:51 -0500714
Benjamin Petersondcf97b92008-07-02 17:30:14 +0000715.. _subprocess-replacements:
716
Georg Brandl116aa622007-08-15 14:28:22 +0000717Replacing Older Functions with the subprocess Module
718----------------------------------------------------
719
Nick Coghlanc29248f2011-11-08 20:49:23 +1000720In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +0000721
722.. note::
723
Nick Coghlanc29248f2011-11-08 20:49:23 +1000724 All "a" functions in this section fail (more or less) silently if the
725 executed program cannot be found; the "b" replacements raise :exc:`OSError`
726 instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000727
Nick Coghlanc29248f2011-11-08 20:49:23 +1000728 In addition, the replacements using :func:`check_output` will fail with a
729 :exc:`CalledProcessError` if the requested operation produces a non-zero
730 return code. The output is still available as the ``output`` attribute of
731 the raised exception.
732
733In the following examples, we assume that the relevant functions have already
734been imported from the subprocess module.
Georg Brandl116aa622007-08-15 14:28:22 +0000735
736
737Replacing /bin/sh shell backquote
738^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
739
740::
741
742 output=`mycmd myarg`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000743 # becomes
744 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +0000745
746
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000747Replacing shell pipeline
748^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000749
750::
751
752 output=`dmesg | grep hda`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000753 # becomes
Georg Brandl116aa622007-08-15 14:28:22 +0000754 p1 = Popen(["dmesg"], stdout=PIPE)
755 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000756 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +0000757 output = p2.communicate()[0]
758
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000759The p1.stdout.close() call after starting the p2 is important in order for p1
760to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Nick Coghlanc29248f2011-11-08 20:49:23 +1000762Alternatively, for trusted input, the shell's own pipeline support may still
R David Murray28b8b942012-04-03 08:46:48 -0400763be used directly::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000764
765 output=`dmesg | grep hda`
766 # becomes
767 output=check_output("dmesg | grep hda", shell=True)
768
769
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000770Replacing :func:`os.system`
771^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000772
773::
774
775 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +1000776 # becomes
777 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000778
779Notes:
780
781* Calling the program through the shell is usually not required.
782
Georg Brandl116aa622007-08-15 14:28:22 +0000783A more realistic example would look like this::
784
785 try:
786 retcode = call("mycmd" + " myarg", shell=True)
787 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +0000788 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000789 else:
Collin Winterc79461b2007-09-01 23:34:30 +0000790 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000791 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +0000792 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000793
794
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000795Replacing the :func:`os.spawn <os.spawnl>` family
796^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000797
798P_NOWAIT example::
799
800 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
801 ==>
802 pid = Popen(["/bin/mycmd", "myarg"]).pid
803
804P_WAIT example::
805
806 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
807 ==>
808 retcode = call(["/bin/mycmd", "myarg"])
809
810Vector example::
811
812 os.spawnvp(os.P_NOWAIT, path, args)
813 ==>
814 Popen([path] + args[1:])
815
816Environment example::
817
818 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
819 ==>
820 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
821
822
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000823
824Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
825^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000826
827::
828
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000829 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000830 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000831 p = Popen(cmd, shell=True, bufsize=bufsize,
832 stdin=PIPE, stdout=PIPE, close_fds=True)
833 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +0000834
835::
836
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000837 (child_stdin,
838 child_stdout,
839 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000840 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000841 p = Popen(cmd, shell=True, bufsize=bufsize,
842 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
843 (child_stdin,
844 child_stdout,
845 child_stderr) = (p.stdin, p.stdout, p.stderr)
846
847::
848
849 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
850 ==>
851 p = Popen(cmd, shell=True, bufsize=bufsize,
852 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
853 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
854
855Return code handling translates as follows::
856
857 pipe = os.popen(cmd, 'w')
858 ...
859 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +0000860 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000861 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000862 ==>
863 process = Popen(cmd, 'w', stdin=PIPE)
864 ...
865 process.stdin.close()
866 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000867 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000868
869
870Replacing functions from the :mod:`popen2` module
871^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
872
873.. note::
874
875 If the cmd argument to popen2 functions is a string, the command is executed
876 through /bin/sh. If it is a list, the command is directly executed.
877
878::
879
880 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
881 ==>
882 p = Popen(["somestring"], shell=True, bufsize=bufsize,
883 stdin=PIPE, stdout=PIPE, close_fds=True)
884 (child_stdout, child_stdin) = (p.stdout, p.stdin)
885
886::
887
888 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
889 ==>
890 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
891 stdin=PIPE, stdout=PIPE, close_fds=True)
892 (child_stdout, child_stdin) = (p.stdout, p.stdin)
893
894:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
895:class:`subprocess.Popen`, except that:
896
897* :class:`Popen` raises an exception if the execution fails.
898
899* the *capturestderr* argument is replaced with the *stderr* argument.
900
901* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
902
903* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +0000904 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
905 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +0300906
Nick Coghlanc29248f2011-11-08 20:49:23 +1000907
Nick Coghlanc29248f2011-11-08 20:49:23 +1000908Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +1000909---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +1000910
911This module also provides the following legacy functions from the 2.x
912``commands`` module. These operations implicitly invoke the system shell and
913none of the guarantees described above regarding security and exception
914handling consistency are valid for these functions.
915
916.. function:: getstatusoutput(cmd)
917
918 Return ``(status, output)`` of executing *cmd* in a shell.
919
920 Execute the string *cmd* in a shell with :func:`os.popen` and return a 2-tuple
921 ``(status, output)``. *cmd* is actually run as ``{ cmd ; } 2>&1``, so that the
922 returned output will contain output or error messages. A trailing newline is
923 stripped from the output. The exit status for the command can be interpreted
924 according to the rules for the C function :c:func:`wait`. Example::
925
926 >>> subprocess.getstatusoutput('ls /bin/ls')
927 (0, '/bin/ls')
928 >>> subprocess.getstatusoutput('cat /bin/junk')
929 (256, 'cat: /bin/junk: No such file or directory')
930 >>> subprocess.getstatusoutput('/bin/junk')
931 (256, 'sh: /bin/junk: not found')
932
933 Availability: UNIX.
934
935
936.. function:: getoutput(cmd)
937
938 Return output (stdout and stderr) of executing *cmd* in a shell.
939
940 Like :func:`getstatusoutput`, except the exit status is ignored and the return
941 value is a string containing the command's output. Example::
942
943 >>> subprocess.getoutput('ls /bin/ls')
944 '/bin/ls'
945
946 Availability: UNIX.
947
Nick Coghlan32e4a582011-11-08 21:50:58 +1000948
949Notes
950-----
951
952.. _converting-argument-sequence:
953
954Converting an argument sequence to a string on Windows
955^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
956
957On Windows, an *args* sequence is converted to a string that can be parsed
958using the following rules (which correspond to the rules used by the MS C
959runtime):
960
9611. Arguments are delimited by white space, which is either a
962 space or a tab.
963
9642. A string surrounded by double quotation marks is
965 interpreted as a single argument, regardless of white space
966 contained within. A quoted string can be embedded in an
967 argument.
968
9693. A double quotation mark preceded by a backslash is
970 interpreted as a literal double quotation mark.
971
9724. Backslashes are interpreted literally, unless they
973 immediately precede a double quotation mark.
974
9755. If backslashes immediately precede a double quotation mark,
976 every pair of backslashes is interpreted as a literal
977 backslash. If the number of backslashes is odd, the last
978 backslash escapes the next double quotation mark as
979 described in rule 3.