blob: aa549f08f33d06e3a68602611325d6ae7509eff6 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001
2:mod:`subprocess` --- Subprocess management
3===========================================
4
5.. module:: subprocess
6 :synopsis: Subprocess management.
7.. moduleauthor:: Peter Åstrand <astrand@lysator.liu.se>
8.. sectionauthor:: Peter Åstrand <astrand@lysator.liu.se>
9
10
11.. versionadded:: 2.4
12
13The :mod:`subprocess` module allows you to spawn new processes, connect to their
14input/output/error pipes, and obtain their return codes. This module intends to
15replace several other, older modules and functions, such as::
16
17 os.system
18 os.spawn*
19 os.popen*
20 popen2.*
21 commands.*
22
23Information about how the :mod:`subprocess` module can be used to replace these
24modules and functions can be found in the following sections.
25
Georg Brandl68b4e742008-07-01 19:59:00 +000026.. seealso::
27
28 :pep:`324` -- PEP proposing the subprocess module
29
Georg Brandl8ec7f652007-08-15 14:28:01 +000030
31Using the subprocess Module
32---------------------------
33
Nick Coghlan2ed203a2011-10-26 21:05:56 +100034The recommended approach to invoking subprocesses is to use the following
35convenience functions for all use cases they can handle. For more advanced
36use cases, the underlying :class:`Popen` interface can be used directly.
Nick Coghlan86711572011-10-24 22:19:40 +100037
38
Nick Coghlan2ed203a2011-10-26 21:05:56 +100039.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Nick Coghlan86711572011-10-24 22:19:40 +100040
41 Run the command described by *args*. Wait for command to complete, then
42 return the :attr:`returncode` attribute.
43
44 The arguments shown above are merely the most common ones, described below
Nick Coghlan87ba6422011-10-27 17:55:13 +100045 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
46 the abbreviated signature). The full function signature is the same as
47 that of the :class:`Popen` constructor - this functions passes all
48 supplied arguments directly through to that interface.
Nick Coghlan86711572011-10-24 22:19:40 +100049
50 Examples::
51
52 >>> subprocess.call(["ls", "-l"])
53 0
54
Nick Coghlan2ed203a2011-10-26 21:05:56 +100055 >>> subprocess.call("exit 1", shell=True)
Nick Coghlan86711572011-10-24 22:19:40 +100056 1
57
58 .. warning::
59
Nick Coghlan87ba6422011-10-27 17:55:13 +100060 Invoking the system shell with ``shell=True`` can be a security hazard
61 if combined with untrusted input. See the warning under
62 :ref:`frequently-used-arguments` for details.
63
64 .. note::
65
Nick Coghlan2ed203a2011-10-26 21:05:56 +100066 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
67 the pipes are not being read in the current process, the child
68 process may block if it generates enough output to a pipe to fill up
69 the OS pipe buffer.
Nick Coghlan86711572011-10-24 22:19:40 +100070
71
Nick Coghlan87ba6422011-10-27 17:55:13 +100072.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Nick Coghlan86711572011-10-24 22:19:40 +100073
74 Run command with arguments. Wait for command to complete. If the return
75 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
76 :exc:`CalledProcessError` object will have the return code in the
77 :attr:`returncode` attribute.
78
Nick Coghlan87ba6422011-10-27 17:55:13 +100079 The arguments shown above are merely the most common ones, described below
80 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
81 the abbreviated signature). The full function signature is the same as
82 that of the :class:`Popen` constructor - this functions passes all
83 supplied arguments directly through to that interface.
84
85 Examples::
Nick Coghlan86711572011-10-24 22:19:40 +100086
87 >>> subprocess.check_call(["ls", "-l"])
88 0
89
Nick Coghlan2ed203a2011-10-26 21:05:56 +100090 >>> subprocess.check_call("exit 1", shell=True)
Nick Coghlan86711572011-10-24 22:19:40 +100091 Traceback (most recent call last):
92 ...
Nick Coghlan2ed203a2011-10-26 21:05:56 +100093 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
Nick Coghlan86711572011-10-24 22:19:40 +100094
95 .. versionadded:: 2.5
96
97 .. warning::
98
Nick Coghlan87ba6422011-10-27 17:55:13 +100099 Invoking the system shell with ``shell=True`` can be a security hazard
100 if combined with untrusted input. See the warning under
101 :ref:`frequently-used-arguments` for details.
102
103 .. note::
104
105 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
106 the pipes are not being read in the current process, the child
107 process may block if it generates enough output to a pipe to fill up
108 the OS pipe buffer.
Nick Coghlan86711572011-10-24 22:19:40 +1000109
110
Nick Coghlan87ba6422011-10-27 17:55:13 +1000111.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
Nick Coghlan86711572011-10-24 22:19:40 +1000112
113 Run command with arguments and return its output as a byte string.
114
115 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
116 :exc:`CalledProcessError` object will have the return code in the
117 :attr:`returncode` attribute and any output in the :attr:`output`
118 attribute.
119
Nick Coghlan87ba6422011-10-27 17:55:13 +1000120 The arguments shown above are merely the most common ones, described below
121 in :ref:`frequently-used-arguments` (hence the slightly odd notation in
122 the abbreviated signature). The full function signature is largely the
123 same as that of the :class:`Popen` constructor, except that *stdout* is
124 not permitted as it is used internally. All other supplied arguments are
125 passed directly through to the :class:`Popen` constructor.
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000126
Nick Coghlan86711572011-10-24 22:19:40 +1000127 Examples::
128
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000129 >>> subprocess.check_output(["echo", "Hello World!"])
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000130 'Hello World!\n'
131
132 >>> subprocess.check_output("exit 1", shell=True)
Nick Coghlan86711572011-10-24 22:19:40 +1000133 Traceback (most recent call last):
134 ...
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000135 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
Nick Coghlan86711572011-10-24 22:19:40 +1000136
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000137 To also capture standard error in the result, use
138 ``stderr=subprocess.STDOUT``::
Nick Coghlan86711572011-10-24 22:19:40 +1000139
140 >>> subprocess.check_output(
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000141 ... "ls non_existent_file; exit 0",
142 ... stderr=subprocess.STDOUT,
143 ... shell=True)
Nick Coghlan86711572011-10-24 22:19:40 +1000144 'ls: non_existent_file: No such file or directory\n'
145
146 .. versionadded:: 2.7
147
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000148 .. warning::
149
Nick Coghlan87ba6422011-10-27 17:55:13 +1000150 Invoking the system shell with ``shell=True`` can be a security hazard
151 if combined with untrusted input. See the warning under
152 :ref:`frequently-used-arguments` for details.
153
154 .. note::
155
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000156 Do not use ``stderr=PIPE`` with this function. As the pipe is not being
157 read in the current process, the child process may block if it
158 generates enough output to the pipe to fill up the OS pipe buffer.
159
Nick Coghlan86711572011-10-24 22:19:40 +1000160
161.. data:: PIPE
162
163 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
164 to :class:`Popen` and indicates that a pipe to the standard stream should be
165 opened.
166
167
168.. data:: STDOUT
169
170 Special value that can be used as the *stderr* argument to :class:`Popen` and
171 indicates that standard error should go into the same handle as standard
172 output.
173
174
Andrew Svetlov8afcec42012-08-09 15:23:49 +0300175.. exception:: CalledProcessError
176
177 Exception raised when a process run by :func:`check_call` or
178 :func:`check_output` returns a non-zero exit status.
179
180 .. attribute:: returncode
181
182 Exit status of the child process.
183
184 .. attribute:: cmd
185
186 Command that was used to spawn the child process.
187
188 .. attribute:: output
189
190 Output of the child process if this exception is raised by
191 :func:`check_output`. Otherwise, ``None``.
192
193
194
Nick Coghlan86711572011-10-24 22:19:40 +1000195.. _frequently-used-arguments:
196
197Frequently Used Arguments
198^^^^^^^^^^^^^^^^^^^^^^^^^
199
200To support a wide variety of use cases, the :class:`Popen` constructor (and
201the convenience functions) accept a large number of optional arguments. For
202most typical use cases, many of these arguments can be safely left at their
203default values. The arguments that are most commonly needed are:
204
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000205 *args* is required for all calls and should be a string, or a sequence of
206 program arguments. Providing a sequence of arguments is generally
207 preferred, as it allows the module to take care of any required escaping
208 and quoting of arguments (e.g. to permit spaces in file names). If passing
209 a single string, either *shell* must be :const:`True` (see below) or else
210 the string must simply name the program to be executed without specifying
211 any arguments.
Nick Coghlan86711572011-10-24 22:19:40 +1000212
213 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
214 standard output and standard error file handles, respectively. Valid values
215 are :data:`PIPE`, an existing file descriptor (a positive integer), an
216 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
217 to the child should be created. With the default settings of ``None``, no
218 redirection will occur; the child's file handles will be inherited from the
219 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
220 the stderr data from the child process should be captured into the same file
221 handle as for stdout.
222
R David Murray5618aaa2012-08-15 11:15:39 -0400223 .. index::
224 single: universal newlines; subprocess module
225
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000226 When *stdout* or *stderr* are pipes and *universal_newlines* is
R David Murray5618aaa2012-08-15 11:15:39 -0400227 ``True`` then all line endings will be converted to ``'\n'`` as described
228 for the :term:`universal newlines` `'U'`` mode argument to :func:`open`.
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000229
Ezio Melottieab4df52012-09-15 08:33:12 +0300230 If *shell* is ``True``, the specified command will be executed through
231 the shell. This can be useful if you are using Python primarily for the
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000232 enhanced control flow it offers over most system shells and still want
Ezio Melottieab4df52012-09-15 08:33:12 +0300233 convenient access to other shell features such as shell pipes, filename
234 wildcards, environment variable expansion, and expansion of ``~`` to a
235 user's home directory. However, note that Python itself offers
236 implementations of many shell-like features (in particular, :mod:`glob`,
237 :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
238 :func:`os.path.expanduser`, and :mod:`shutil`).
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000239
240 .. warning::
241
242 Executing shell commands that incorporate unsanitized input from an
243 untrusted source makes a program vulnerable to `shell injection
244 <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
245 a serious security flaw which can result in arbitrary command execution.
246 For this reason, the use of *shell=True* is **strongly discouraged** in cases
247 where the command string is constructed from external input::
248
249 >>> from subprocess import call
250 >>> filename = input("What file would you like to display?\n")
251 What file would you like to display?
252 non_existent; rm -rf / #
253 >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
254
255 ``shell=False`` disables all shell based features, but does not suffer
256 from this vulnerability; see the Note in the :class:`Popen` constructor
257 documentation for helpful hints in getting ``shell=False`` to work.
258
Nick Coghlan86711572011-10-24 22:19:40 +1000259These options, along with all of the other options, are described in more
260detail in the :class:`Popen` constructor documentation.
261
262
Sandro Tosidbcbd102011-12-25 11:27:22 +0100263Popen Constructor
Sandro Tosi44585bd2011-12-25 17:13:10 +0100264^^^^^^^^^^^^^^^^^
Nick Coghlan86711572011-10-24 22:19:40 +1000265
266The underlying process creation and management in this module is handled by
267the :class:`Popen` class. It offers a lot of flexibility so that developers
268are able to handle the less common cases not covered by the convenience
269functions.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000270
271
272.. class:: Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
273
274 Arguments are:
275
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700276 *args* should be a sequence of program arguments or else a single string.
277 By default, the program to execute is the first item in *args* if *args* is
278 a sequence and the string itself if *args* is a string. However, see the
279 *shell* and *executable* arguments for differences from this behavior.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000280
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700281 On Unix, the :class:`Popen` class uses :meth:`os.execvp`-like behavior to
282 execute the child program. If *args* is a string, the string is
283 interpreted as the name or path of the program to execute; this only works
284 if the program is being given no arguments.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000285
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000286 .. note::
287
288 :meth:`shlex.split` can be useful when determining the correct
289 tokenization for *args*, especially in complex cases::
290
291 >>> import shlex, subprocess
292 >>> command_line = raw_input()
293 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
294 >>> args = shlex.split(command_line)
295 >>> print args
296 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
297 >>> p = subprocess.Popen(args) # Success!
298
299 Note in particular that options (such as *-input*) and arguments (such
300 as *eggs.txt*) that are separated by whitespace in the shell go in separate
301 list elements, while arguments that need quoting or backslash escaping when
302 used in the shell (such as filenames containing spaces or the *echo* command
303 shown above) are single list elements.
304
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700305 On Windows, the :class:`Popen` class uses ``CreateProcess()`` to
306 execute the child program, which operates on strings. If *args* is a
307 sequence, it will be converted to a string in a manner described in
308 :ref:`converting-argument-sequence`.
309
310 The *shell* argument (which defaults to *False*) specifies whether to use
311 the shell as the program to execute. It is recommended to pass *args* as a
312 sequence if *shell* is *False* and as a string if *shell* is *True*.
313
314 On Unix with ``shell=True``, the shell defaults to :file:`/bin/sh`. If
315 *args* is a string, the string specifies the command
316 to execute through the shell. This means that the string must be
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000317 formatted exactly as it would be when typed at the shell prompt. This
318 includes, for example, quoting or backslash escaping filenames with spaces in
319 them. If *args* is a sequence, the first item specifies the command string, and
320 any additional items will be treated as additional arguments to the shell
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700321 itself. That is to say, :class:`Popen` does the equivalent of::
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000322
323 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000324
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700325 On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
326 specifies the default shell. The only time you need to specify
327 ``shell=True`` on Windows is when the command you wish to execute is built
328 into the shell (e.g. :command:`dir` or :command:`copy`). You do not need
329 ``shell=True`` to run a batch file or console-based executable.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000330
331 *bufsize*, if given, has the same meaning as the corresponding argument to the
332 built-in open() function: :const:`0` means unbuffered, :const:`1` means line
333 buffered, any other positive value means use a buffer of (approximately) that
334 size. A negative *bufsize* means to use the system default, which usually means
335 fully buffered. The default value for *bufsize* is :const:`0` (unbuffered).
336
Antoine Pitrouc3955452010-06-02 17:08:47 +0000337 .. note::
338
339 If you experience performance issues, it is recommended that you try to
340 enable buffering by setting *bufsize* to either -1 or a large enough
341 positive value (such as 4096).
342
Chris Jerdonek1906c0c2012-10-08 23:18:17 -0700343 The *executable* argument specifies a replacement program to execute. It
344 is very seldom needed. When ``shell=False``, *executable* replaces the
345 program to execute specified by *args*. However, the *args* program is
346 still treated by most programs as the command name, which can then be
347 different from the program actually executed. On Unix, the *args* name
348 becomes the display name for the executable in utilities such as
349 :program:`ps`. If ``shell=True``, on Unix the *executable* argument
350 specifies a replacement shell for the default :file:`/bin/sh`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000351
Nick Coghlan86711572011-10-24 22:19:40 +1000352 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlf5d5a662008-12-06 11:57:12 +0000353 standard output and standard error file handles, respectively. Valid values
354 are :data:`PIPE`, an existing file descriptor (a positive integer), an
355 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
Nick Coghlan86711572011-10-24 22:19:40 +1000356 to the child should be created. With the default settings of ``None``, no
357 redirection will occur; the child's file handles will be inherited from the
358 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
359 the stderr data from the child process should be captured into the same file
360 handle as for stdout.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000361
362 If *preexec_fn* is set to a callable object, this object will be called in the
363 child process just before the child is executed. (Unix only)
364
365 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
366 :const:`2` will be closed before the child process is executed. (Unix only).
367 Or, on Windows, if *close_fds* is true then no handles will be inherited by the
368 child process. Note that on Windows, you cannot set *close_fds* to true and
369 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
370
371 If *shell* is :const:`True`, the specified command will be executed through the
372 shell.
373
Nick Coghlan87ba6422011-10-27 17:55:13 +1000374 .. warning::
Nick Coghlan65ad31a2011-10-26 21:15:53 +1000375
376 Enabling this option can be a security hazard if combined with untrusted
377 input. See the warning under :ref:`frequently-used-arguments`
378 for details.
379
Georg Brandl8ec7f652007-08-15 14:28:01 +0000380 If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
381 before it is executed. Note that this directory is not considered when
382 searching the executable, so you can't specify the program's path relative to
383 *cwd*.
384
Georg Brandlf801b0f2008-04-19 16:58:49 +0000385 If *env* is not ``None``, it must be a mapping that defines the environment
386 variables for the new process; these are used instead of inheriting the current
387 process' environment, which is the default behavior.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000388
R. David Murray72030812009-04-16 18:12:53 +0000389 .. note::
R. David Murray6076d392009-04-15 22:33:07 +0000390
R. David Murray72030812009-04-16 18:12:53 +0000391 If specified, *env* must provide any variables required
392 for the program to execute. On Windows, in order to run a
393 `side-by-side assembly`_ the specified *env* **must** include a valid
R. David Murray6076d392009-04-15 22:33:07 +0000394 :envvar:`SystemRoot`.
395
R. David Murray72030812009-04-16 18:12:53 +0000396 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
397
R David Murrayc7b8f802012-08-15 11:22:58 -0400398 If *universal_newlines* is ``True``, the file objects *stdout* and *stderr*
399 are opened as text files in :term:`universal newlines` mode. Lines may be
400 terminated by any of ``'\n'``, the Unix end-of-line convention, ``'\r'``,
401 the old Macintosh convention or ``'\r\n'``, the Windows convention. All of
402 these external representations are seen as ``'\n'`` by the Python program.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000403
404 .. note::
405
Georg Brandl6ab5d082009-12-20 14:33:20 +0000406 This feature is only available if Python is built with universal newline
407 support (the default). Also, the newlines attribute of the file objects
408 :attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
409 communicate() method.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000410
Brian Curtinbb23bd62011-04-29 22:23:46 -0500411 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
412 passed to the underlying ``CreateProcess`` function.
413 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
414 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000415
416
Georg Brandl8ec7f652007-08-15 14:28:01 +0000417Exceptions
418^^^^^^^^^^
419
420Exceptions raised in the child process, before the new program has started to
421execute, will be re-raised in the parent. Additionally, the exception object
422will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl21946af2010-10-06 09:28:45 +0000423containing traceback information from the child's point of view.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000424
425The most common exception raised is :exc:`OSError`. This occurs, for example,
426when trying to execute a non-existent file. Applications should prepare for
427:exc:`OSError` exceptions.
428
429A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
430arguments.
431
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000432:func:`check_call` and :func:`check_output` will raise
433:exc:`CalledProcessError` if the called process returns a non-zero return
434code.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000435
436
437Security
438^^^^^^^^
439
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000440Unlike some other popen functions, this implementation will never call a
441system shell implicitly. This means that all characters, including shell
442metacharacters, can safely be passed to child processes. Obviously, if the
443shell is invoked explicitly, then it is the application's responsibility to
Nick Coghlan63c54e82011-10-26 21:34:26 +1000444ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000445
446
447Popen Objects
448-------------
449
450Instances of the :class:`Popen` class have the following methods:
451
452
453.. method:: Popen.poll()
454
Georg Brandl2cb103f2008-01-06 16:01:26 +0000455 Check if child process has terminated. Set and return :attr:`returncode`
456 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000457
458
459.. method:: Popen.wait()
460
Georg Brandl2cb103f2008-01-06 16:01:26 +0000461 Wait for child process to terminate. Set and return :attr:`returncode`
462 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000463
Georg Brandl143de622008-08-04 06:29:36 +0000464 .. warning::
465
Philip Jenvey26275532009-12-03 02:25:54 +0000466 This will deadlock when using ``stdout=PIPE`` and/or
467 ``stderr=PIPE`` and the child process generates enough output to
468 a pipe such that it blocks waiting for the OS pipe buffer to
469 accept more data. Use :meth:`communicate` to avoid that.
Gregory P. Smith08792502008-08-04 01:03:50 +0000470
Georg Brandl8ec7f652007-08-15 14:28:01 +0000471
472.. method:: Popen.communicate(input=None)
473
474 Interact with process: Send data to stdin. Read data from stdout and stderr,
475 until end-of-file is reached. Wait for process to terminate. The optional
476 *input* argument should be a string to be sent to the child process, or
477 ``None``, if no data should be sent to the child.
478
Georg Brandl17432012008-12-04 21:28:16 +0000479 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000480
Georg Brandl439f2502007-11-24 11:31:46 +0000481 Note that if you want to send data to the process's stdin, you need to create
482 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
483 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
484 ``stderr=PIPE`` too.
485
Georg Brandl2cb103f2008-01-06 16:01:26 +0000486 .. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000487
Georg Brandl2cb103f2008-01-06 16:01:26 +0000488 The data read is buffered in memory, so do not use this method if the data
489 size is large or unlimited.
490
Georg Brandl8ec7f652007-08-15 14:28:01 +0000491
Christian Heimese74c8f22008-04-19 02:23:57 +0000492.. method:: Popen.send_signal(signal)
493
494 Sends the signal *signal* to the child.
495
496 .. note::
497
Brian Curtine5aa8862010-04-02 23:26:06 +0000498 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Ezio Melotti9ccc5812010-04-05 08:16:41 +0000499 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtine5aa8862010-04-02 23:26:06 +0000500 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Georg Brandl734de682008-04-19 08:23:59 +0000501
502 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000503
504
505.. method:: Popen.terminate()
506
507 Stop the child. On Posix OSs the method sends SIGTERM to the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100508 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimese74c8f22008-04-19 02:23:57 +0000509 to stop the child.
510
Georg Brandl734de682008-04-19 08:23:59 +0000511 .. versionadded:: 2.6
512
Christian Heimese74c8f22008-04-19 02:23:57 +0000513
514.. method:: Popen.kill()
515
516 Kills the child. On Posix OSs the function sends SIGKILL to the child.
Georg Brandl734de682008-04-19 08:23:59 +0000517 On Windows :meth:`kill` is an alias for :meth:`terminate`.
518
519 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000520
521
Georg Brandl8ec7f652007-08-15 14:28:01 +0000522The following attributes are also available:
523
Georg Brandl143de622008-08-04 06:29:36 +0000524.. warning::
525
Ezio Melotti8662c842012-08-27 10:00:05 +0300526 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
527 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
Georg Brandl16a57f62009-04-27 15:29:09 +0000528 deadlocks due to any of the other OS pipe buffers filling up and blocking the
529 child process.
Georg Brandl143de622008-08-04 06:29:36 +0000530
531
Georg Brandl8ec7f652007-08-15 14:28:01 +0000532.. attribute:: Popen.stdin
533
Georg Brandlf5d5a662008-12-06 11:57:12 +0000534 If the *stdin* argument was :data:`PIPE`, this attribute is a file object
535 that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000536
537
538.. attribute:: Popen.stdout
539
Georg Brandlf5d5a662008-12-06 11:57:12 +0000540 If the *stdout* argument was :data:`PIPE`, this attribute is a file object
541 that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000542
543
544.. attribute:: Popen.stderr
545
Georg Brandlf5d5a662008-12-06 11:57:12 +0000546 If the *stderr* argument was :data:`PIPE`, this attribute is a file object
547 that provides error output from the child process. Otherwise, it is
548 ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000549
550
551.. attribute:: Popen.pid
552
553 The process ID of the child process.
554
Georg Brandl0b56ce02010-03-21 09:28:16 +0000555 Note that if you set the *shell* argument to ``True``, this is the process ID
556 of the spawned shell.
557
Georg Brandl8ec7f652007-08-15 14:28:01 +0000558
559.. attribute:: Popen.returncode
560
Georg Brandl2cb103f2008-01-06 16:01:26 +0000561 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
562 by :meth:`communicate`). A ``None`` value indicates that the process
563 hasn't terminated yet.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000564
Georg Brandl2cb103f2008-01-06 16:01:26 +0000565 A negative value ``-N`` indicates that the child was terminated by signal
566 ``N`` (Unix only).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000567
568
Brian Curtinbb23bd62011-04-29 22:23:46 -0500569Windows Popen Helpers
570---------------------
571
572The :class:`STARTUPINFO` class and following constants are only available
573on Windows.
574
575.. class:: STARTUPINFO()
576
577 Partial support of the Windows
578 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
579 structure is used for :class:`Popen` creation.
580
581 .. attribute:: dwFlags
582
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700583 A bit field that determines whether certain :class:`STARTUPINFO`
584 attributes are used when the process creates a window. ::
Brian Curtinbb23bd62011-04-29 22:23:46 -0500585
586 si = subprocess.STARTUPINFO()
587 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
588
589 .. attribute:: hStdInput
590
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700591 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
592 is the standard input handle for the process. If
593 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
594 input is the keyboard buffer.
Brian Curtinbb23bd62011-04-29 22:23:46 -0500595
596 .. attribute:: hStdOutput
597
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700598 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
599 is the standard output handle for the process. Otherwise, this attribute
600 is ignored and the default for standard output is the console window's
Brian Curtinbb23bd62011-04-29 22:23:46 -0500601 buffer.
602
603 .. attribute:: hStdError
604
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700605 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
606 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500607 ignored and the default for standard error is the console window's buffer.
608
609 .. attribute:: wShowWindow
610
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700611 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtinbb23bd62011-04-29 22:23:46 -0500612 can be any of the values that can be specified in the ``nCmdShow``
613 parameter for the
614 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700615 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500616 ignored.
617
618 :data:`SW_HIDE` is provided for this attribute. It is used when
619 :class:`Popen` is called with ``shell=True``.
620
621
622Constants
623^^^^^^^^^
624
625The :mod:`subprocess` module exposes the following constants.
626
627.. data:: STD_INPUT_HANDLE
628
629 The standard input device. Initially, this is the console input buffer,
630 ``CONIN$``.
631
632.. data:: STD_OUTPUT_HANDLE
633
634 The standard output device. Initially, this is the active console screen
635 buffer, ``CONOUT$``.
636
637.. data:: STD_ERROR_HANDLE
638
639 The standard error device. Initially, this is the active console screen
640 buffer, ``CONOUT$``.
641
642.. data:: SW_HIDE
643
644 Hides the window. Another window will be activated.
645
646.. data:: STARTF_USESTDHANDLES
647
648 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700649 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtinbb23bd62011-04-29 22:23:46 -0500650 contain additional information.
651
652.. data:: STARTF_USESHOWWINDOW
653
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700654 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtinbb23bd62011-04-29 22:23:46 -0500655 additional information.
656
657.. data:: CREATE_NEW_CONSOLE
658
659 The new process has a new console, instead of inheriting its parent's
660 console (the default).
661
662 This flag is always set when :class:`Popen` is created with ``shell=True``.
663
664.. data:: CREATE_NEW_PROCESS_GROUP
665
666 A :class:`Popen` ``creationflags`` parameter to specify that a new process
667 group will be created. This flag is necessary for using :func:`os.kill`
668 on the subprocess.
669
670 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
671
672
Georg Brandl0ba92b22008-06-22 09:05:29 +0000673.. _subprocess-replacements:
674
Georg Brandl8ec7f652007-08-15 14:28:01 +0000675Replacing Older Functions with the subprocess Module
676----------------------------------------------------
677
Nick Coghlan86711572011-10-24 22:19:40 +1000678In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000679
680.. note::
681
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000682 All "a" functions in this section fail (more or less) silently if the
683 executed program cannot be found; the "b" replacements raise :exc:`OSError`
684 instead.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000685
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000686 In addition, the replacements using :func:`check_output` will fail with a
687 :exc:`CalledProcessError` if the requested operation produces a non-zero
688 return code. The output is still available as the ``output`` attribute of
689 the raised exception.
690
691In the following examples, we assume that the relevant functions have already
692been imported from the subprocess module.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000693
694
695Replacing /bin/sh shell backquote
696^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
697
698::
699
700 output=`mycmd myarg`
Nick Coghlan86711572011-10-24 22:19:40 +1000701 # becomes
702 output = check_output(["mycmd", "myarg"])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000703
704
Benjamin Petersoncae58482008-10-10 20:38:49 +0000705Replacing shell pipeline
706^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000707
708::
709
710 output=`dmesg | grep hda`
Nick Coghlan86711572011-10-24 22:19:40 +1000711 # becomes
Georg Brandl8ec7f652007-08-15 14:28:01 +0000712 p1 = Popen(["dmesg"], stdout=PIPE)
713 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000714 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000715 output = p2.communicate()[0]
716
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000717The p1.stdout.close() call after starting the p2 is important in order for p1
718to receive a SIGPIPE if p2 exits before p1.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000719
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000720Alternatively, for trusted input, the shell's own pipeline support may still
R David Murray5fc56eb2012-04-03 08:46:05 -0400721be used directly::
Nick Coghlan86711572011-10-24 22:19:40 +1000722
723 output=`dmesg | grep hda`
724 # becomes
725 output=check_output("dmesg | grep hda", shell=True)
726
727
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000728Replacing :func:`os.system`
729^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000730
731::
732
733 sts = os.system("mycmd" + " myarg")
Nick Coghlan86711572011-10-24 22:19:40 +1000734 # becomes
735 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000736
737Notes:
738
739* Calling the program through the shell is usually not required.
740
Georg Brandl8ec7f652007-08-15 14:28:01 +0000741A more realistic example would look like this::
742
743 try:
744 retcode = call("mycmd" + " myarg", shell=True)
745 if retcode < 0:
746 print >>sys.stderr, "Child was terminated by signal", -retcode
747 else:
748 print >>sys.stderr, "Child returned", retcode
749 except OSError, e:
750 print >>sys.stderr, "Execution failed:", e
751
752
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000753Replacing the :func:`os.spawn <os.spawnl>` family
754^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000755
756P_NOWAIT example::
757
758 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
759 ==>
760 pid = Popen(["/bin/mycmd", "myarg"]).pid
761
762P_WAIT example::
763
764 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
765 ==>
766 retcode = call(["/bin/mycmd", "myarg"])
767
768Vector example::
769
770 os.spawnvp(os.P_NOWAIT, path, args)
771 ==>
772 Popen([path] + args[1:])
773
774Environment example::
775
776 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
777 ==>
778 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
779
780
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000781Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
782^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000783
784::
785
Philip Jenvey8b902042009-09-29 19:10:15 +0000786 pipe = os.popen("cmd", 'r', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000787 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000788 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout
Georg Brandl8ec7f652007-08-15 14:28:01 +0000789
790::
791
Philip Jenvey8b902042009-09-29 19:10:15 +0000792 pipe = os.popen("cmd", 'w', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000793 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000794 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdin=PIPE).stdin
Georg Brandl8ec7f652007-08-15 14:28:01 +0000795
796::
797
Philip Jenvey8b902042009-09-29 19:10:15 +0000798 (child_stdin, child_stdout) = os.popen2("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000799 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000800 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000801 stdin=PIPE, stdout=PIPE, close_fds=True)
802 (child_stdin, child_stdout) = (p.stdin, p.stdout)
803
804::
805
806 (child_stdin,
807 child_stdout,
Philip Jenvey8b902042009-09-29 19:10:15 +0000808 child_stderr) = os.popen3("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000809 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000810 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000811 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
812 (child_stdin,
813 child_stdout,
814 child_stderr) = (p.stdin, p.stdout, p.stderr)
815
816::
817
Philip Jenvey8b902042009-09-29 19:10:15 +0000818 (child_stdin, child_stdout_and_stderr) = os.popen4("cmd", mode,
819 bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000820 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000821 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000822 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
823 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
824
Philip Jenvey8b902042009-09-29 19:10:15 +0000825On Unix, os.popen2, os.popen3 and os.popen4 also accept a sequence as
826the command to execute, in which case arguments will be passed
827directly to the program without shell intervention. This usage can be
828replaced as follows::
829
830 (child_stdin, child_stdout) = os.popen2(["/bin/ls", "-l"], mode,
831 bufsize)
832 ==>
833 p = Popen(["/bin/ls", "-l"], bufsize=bufsize, stdin=PIPE, stdout=PIPE)
834 (child_stdin, child_stdout) = (p.stdin, p.stdout)
835
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000836Return code handling translates as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000837
Philip Jenvey8b902042009-09-29 19:10:15 +0000838 pipe = os.popen("cmd", 'w')
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000839 ...
840 rc = pipe.close()
Stefan Kraha253dc12010-07-14 10:06:07 +0000841 if rc is not None and rc >> 8:
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000842 print "There were some errors"
843 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000844 process = Popen("cmd", 'w', shell=True, stdin=PIPE)
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000845 ...
846 process.stdin.close()
847 if process.wait() != 0:
848 print "There were some errors"
849
850
851Replacing functions from the :mod:`popen2` module
852^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000853
Georg Brandl8ec7f652007-08-15 14:28:01 +0000854::
855
856 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
857 ==>
858 p = Popen(["somestring"], shell=True, bufsize=bufsize,
859 stdin=PIPE, stdout=PIPE, close_fds=True)
860 (child_stdout, child_stdin) = (p.stdout, p.stdin)
861
Philip Jenvey8b902042009-09-29 19:10:15 +0000862On Unix, popen2 also accepts a sequence as the command to execute, in
863which case arguments will be passed directly to the program without
864shell intervention. This usage can be replaced as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000865
Philip Jenvey8b902042009-09-29 19:10:15 +0000866 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize,
867 mode)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000868 ==>
869 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
870 stdin=PIPE, stdout=PIPE, close_fds=True)
871 (child_stdout, child_stdin) = (p.stdout, p.stdin)
872
Georg Brandlf5d5a662008-12-06 11:57:12 +0000873:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
874:class:`subprocess.Popen`, except that:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000875
Georg Brandlf5d5a662008-12-06 11:57:12 +0000876* :class:`Popen` raises an exception if the execution fails.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000877
878* the *capturestderr* argument is replaced with the *stderr* argument.
879
Georg Brandlf5d5a662008-12-06 11:57:12 +0000880* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000881
882* popen2 closes all file descriptors by default, but you have to specify
Georg Brandlf5d5a662008-12-06 11:57:12 +0000883 ``close_fds=True`` with :class:`Popen`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000884
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000885
Eli Bendersky929e2762011-04-15 07:35:06 +0300886Notes
887-----
888
889.. _converting-argument-sequence:
890
891Converting an argument sequence to a string on Windows
892^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
893
894On Windows, an *args* sequence is converted to a string that can be parsed
895using the following rules (which correspond to the rules used by the MS C
896runtime):
897
8981. Arguments are delimited by white space, which is either a
899 space or a tab.
900
9012. A string surrounded by double quotation marks is
902 interpreted as a single argument, regardless of white space
903 contained within. A quoted string can be embedded in an
904 argument.
905
9063. A double quotation mark preceded by a backslash is
907 interpreted as a literal double quotation mark.
908
9094. Backslashes are interpreted literally, unless they
910 immediately precede a double quotation mark.
911
9125. If backslashes immediately precede a double quotation mark,
913 every pair of backslashes is interpreted as a literal
914 backslash. If the number of backslashes is odd, the last
915 backslash escapes the next double quotation mark as
916 described in rule 3.
917