blob: 5f3b4b18e0f4129a80185958bc1d8f75ba83b7d0 [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
Benjamin Petersonfff5cf62008-07-27 15:22:14 +0000276 *args* should be a string, or a sequence of program arguments. The program
R. David Murrayfe6e7842009-05-29 19:30:27 +0000277 to execute is normally the first item in the args sequence or the string if
278 a string is given, but can be explicitly set by using the *executable*
279 argument. When *executable* is given, the first item in the args sequence
280 is still treated by most programs as the command name, which can then be
281 different from the actual executable name. On Unix, it becomes the display
282 name for the executing program in utilities such as :program:`ps`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000283
284 On Unix, with *shell=False* (default): In this case, the Popen class uses
285 :meth:`os.execvp` to execute the child program. *args* should normally be a
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000286 sequence. If a string is specified for *args*, it will be used as the name
287 or path of the program to execute; this will only work if the program is
288 being given no arguments.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000289
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000290 .. note::
291
292 :meth:`shlex.split` can be useful when determining the correct
293 tokenization for *args*, especially in complex cases::
294
295 >>> import shlex, subprocess
296 >>> command_line = raw_input()
297 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
298 >>> args = shlex.split(command_line)
299 >>> print args
300 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
301 >>> p = subprocess.Popen(args) # Success!
302
303 Note in particular that options (such as *-input*) and arguments (such
304 as *eggs.txt*) that are separated by whitespace in the shell go in separate
305 list elements, while arguments that need quoting or backslash escaping when
306 used in the shell (such as filenames containing spaces or the *echo* command
307 shown above) are single list elements.
308
309 On Unix, with *shell=True*: If args is a string, it specifies the command
310 string to execute through the shell. This means that the string must be
311 formatted exactly as it would be when typed at the shell prompt. This
312 includes, for example, quoting or backslash escaping filenames with spaces in
313 them. If *args* is a sequence, the first item specifies the command string, and
314 any additional items will be treated as additional arguments to the shell
315 itself. That is to say, *Popen* does the equivalent of::
316
317 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000318
R David Murrayfc095202012-07-16 22:31:32 -0400319 On Windows: the :class:`Popen` class uses CreateProcess() to execute the
Eli Bendersky929e2762011-04-15 07:35:06 +0300320 child program, which operates on strings. If *args* is a sequence, it will
321 be converted to a string in a manner described in
322 :ref:`converting-argument-sequence`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000323
324 *bufsize*, if given, has the same meaning as the corresponding argument to the
325 built-in open() function: :const:`0` means unbuffered, :const:`1` means line
326 buffered, any other positive value means use a buffer of (approximately) that
327 size. A negative *bufsize* means to use the system default, which usually means
328 fully buffered. The default value for *bufsize* is :const:`0` (unbuffered).
329
Antoine Pitrouc3955452010-06-02 17:08:47 +0000330 .. note::
331
332 If you experience performance issues, it is recommended that you try to
333 enable buffering by setting *bufsize* to either -1 or a large enough
334 positive value (such as 4096).
335
Georg Brandl8ec7f652007-08-15 14:28:01 +0000336 The *executable* argument specifies the program to execute. It is very seldom
337 needed: Usually, the program to execute is defined by the *args* argument. If
338 ``shell=True``, the *executable* argument specifies which shell to use. On Unix,
339 the default shell is :file:`/bin/sh`. On Windows, the default shell is
Georg Brandl0d8649a2009-06-30 16:17:28 +0000340 specified by the :envvar:`COMSPEC` environment variable. The only reason you
341 would need to specify ``shell=True`` on Windows is where the command you
342 wish to execute is actually built in to the shell, eg ``dir``, ``copy``.
343 You don't need ``shell=True`` to run a batch file, nor to run a console-based
344 executable.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000345
Nick Coghlan86711572011-10-24 22:19:40 +1000346 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlf5d5a662008-12-06 11:57:12 +0000347 standard output and standard error file handles, respectively. Valid values
348 are :data:`PIPE`, an existing file descriptor (a positive integer), an
349 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
Nick Coghlan86711572011-10-24 22:19:40 +1000350 to the child should be created. With the default settings of ``None``, no
351 redirection will occur; the child's file handles will be inherited from the
352 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
353 the stderr data from the child process should be captured into the same file
354 handle as for stdout.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000355
356 If *preexec_fn* is set to a callable object, this object will be called in the
357 child process just before the child is executed. (Unix only)
358
359 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
360 :const:`2` will be closed before the child process is executed. (Unix only).
361 Or, on Windows, if *close_fds* is true then no handles will be inherited by the
362 child process. Note that on Windows, you cannot set *close_fds* to true and
363 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
364
365 If *shell* is :const:`True`, the specified command will be executed through the
366 shell.
367
Nick Coghlan87ba6422011-10-27 17:55:13 +1000368 .. warning::
Nick Coghlan65ad31a2011-10-26 21:15:53 +1000369
370 Enabling this option can be a security hazard if combined with untrusted
371 input. See the warning under :ref:`frequently-used-arguments`
372 for details.
373
Georg Brandl8ec7f652007-08-15 14:28:01 +0000374 If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
375 before it is executed. Note that this directory is not considered when
376 searching the executable, so you can't specify the program's path relative to
377 *cwd*.
378
Georg Brandlf801b0f2008-04-19 16:58:49 +0000379 If *env* is not ``None``, it must be a mapping that defines the environment
380 variables for the new process; these are used instead of inheriting the current
381 process' environment, which is the default behavior.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000382
R. David Murray72030812009-04-16 18:12:53 +0000383 .. note::
R. David Murray6076d392009-04-15 22:33:07 +0000384
R. David Murray72030812009-04-16 18:12:53 +0000385 If specified, *env* must provide any variables required
386 for the program to execute. On Windows, in order to run a
387 `side-by-side assembly`_ the specified *env* **must** include a valid
R. David Murray6076d392009-04-15 22:33:07 +0000388 :envvar:`SystemRoot`.
389
R. David Murray72030812009-04-16 18:12:53 +0000390 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
391
R David Murrayc7b8f802012-08-15 11:22:58 -0400392 If *universal_newlines* is ``True``, the file objects *stdout* and *stderr*
393 are opened as text files in :term:`universal newlines` mode. Lines may be
394 terminated by any of ``'\n'``, the Unix end-of-line convention, ``'\r'``,
395 the old Macintosh convention or ``'\r\n'``, the Windows convention. All of
396 these external representations are seen as ``'\n'`` by the Python program.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000397
398 .. note::
399
Georg Brandl6ab5d082009-12-20 14:33:20 +0000400 This feature is only available if Python is built with universal newline
401 support (the default). Also, the newlines attribute of the file objects
402 :attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
403 communicate() method.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000404
Brian Curtinbb23bd62011-04-29 22:23:46 -0500405 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
406 passed to the underlying ``CreateProcess`` function.
407 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
408 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000409
410
Georg Brandl8ec7f652007-08-15 14:28:01 +0000411Exceptions
412^^^^^^^^^^
413
414Exceptions raised in the child process, before the new program has started to
415execute, will be re-raised in the parent. Additionally, the exception object
416will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl21946af2010-10-06 09:28:45 +0000417containing traceback information from the child's point of view.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000418
419The most common exception raised is :exc:`OSError`. This occurs, for example,
420when trying to execute a non-existent file. Applications should prepare for
421:exc:`OSError` exceptions.
422
423A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
424arguments.
425
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000426:func:`check_call` and :func:`check_output` will raise
427:exc:`CalledProcessError` if the called process returns a non-zero return
428code.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000429
430
431Security
432^^^^^^^^
433
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000434Unlike some other popen functions, this implementation will never call a
435system shell implicitly. This means that all characters, including shell
436metacharacters, can safely be passed to child processes. Obviously, if the
437shell is invoked explicitly, then it is the application's responsibility to
Nick Coghlan63c54e82011-10-26 21:34:26 +1000438ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000439
440
441Popen Objects
442-------------
443
444Instances of the :class:`Popen` class have the following methods:
445
446
447.. method:: Popen.poll()
448
Georg Brandl2cb103f2008-01-06 16:01:26 +0000449 Check if child process has terminated. Set and return :attr:`returncode`
450 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000451
452
453.. method:: Popen.wait()
454
Georg Brandl2cb103f2008-01-06 16:01:26 +0000455 Wait for child process to terminate. Set and return :attr:`returncode`
456 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000457
Georg Brandl143de622008-08-04 06:29:36 +0000458 .. warning::
459
Philip Jenvey26275532009-12-03 02:25:54 +0000460 This will deadlock when using ``stdout=PIPE`` and/or
461 ``stderr=PIPE`` and the child process generates enough output to
462 a pipe such that it blocks waiting for the OS pipe buffer to
463 accept more data. Use :meth:`communicate` to avoid that.
Gregory P. Smith08792502008-08-04 01:03:50 +0000464
Georg Brandl8ec7f652007-08-15 14:28:01 +0000465
466.. method:: Popen.communicate(input=None)
467
468 Interact with process: Send data to stdin. Read data from stdout and stderr,
469 until end-of-file is reached. Wait for process to terminate. The optional
470 *input* argument should be a string to be sent to the child process, or
471 ``None``, if no data should be sent to the child.
472
Georg Brandl17432012008-12-04 21:28:16 +0000473 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000474
Georg Brandl439f2502007-11-24 11:31:46 +0000475 Note that if you want to send data to the process's stdin, you need to create
476 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
477 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
478 ``stderr=PIPE`` too.
479
Georg Brandl2cb103f2008-01-06 16:01:26 +0000480 .. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000481
Georg Brandl2cb103f2008-01-06 16:01:26 +0000482 The data read is buffered in memory, so do not use this method if the data
483 size is large or unlimited.
484
Georg Brandl8ec7f652007-08-15 14:28:01 +0000485
Christian Heimese74c8f22008-04-19 02:23:57 +0000486.. method:: Popen.send_signal(signal)
487
488 Sends the signal *signal* to the child.
489
490 .. note::
491
Brian Curtine5aa8862010-04-02 23:26:06 +0000492 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Ezio Melotti9ccc5812010-04-05 08:16:41 +0000493 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtine5aa8862010-04-02 23:26:06 +0000494 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Georg Brandl734de682008-04-19 08:23:59 +0000495
496 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000497
498
499.. method:: Popen.terminate()
500
501 Stop the child. On Posix OSs the method sends SIGTERM to the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100502 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimese74c8f22008-04-19 02:23:57 +0000503 to stop the child.
504
Georg Brandl734de682008-04-19 08:23:59 +0000505 .. versionadded:: 2.6
506
Christian Heimese74c8f22008-04-19 02:23:57 +0000507
508.. method:: Popen.kill()
509
510 Kills the child. On Posix OSs the function sends SIGKILL to the child.
Georg Brandl734de682008-04-19 08:23:59 +0000511 On Windows :meth:`kill` is an alias for :meth:`terminate`.
512
513 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000514
515
Georg Brandl8ec7f652007-08-15 14:28:01 +0000516The following attributes are also available:
517
Georg Brandl143de622008-08-04 06:29:36 +0000518.. warning::
519
Ezio Melotti8662c842012-08-27 10:00:05 +0300520 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
521 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
Georg Brandl16a57f62009-04-27 15:29:09 +0000522 deadlocks due to any of the other OS pipe buffers filling up and blocking the
523 child process.
Georg Brandl143de622008-08-04 06:29:36 +0000524
525
Georg Brandl8ec7f652007-08-15 14:28:01 +0000526.. attribute:: Popen.stdin
527
Georg Brandlf5d5a662008-12-06 11:57:12 +0000528 If the *stdin* argument was :data:`PIPE`, this attribute is a file object
529 that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000530
531
532.. attribute:: Popen.stdout
533
Georg Brandlf5d5a662008-12-06 11:57:12 +0000534 If the *stdout* argument was :data:`PIPE`, this attribute is a file object
535 that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000536
537
538.. attribute:: Popen.stderr
539
Georg Brandlf5d5a662008-12-06 11:57:12 +0000540 If the *stderr* argument was :data:`PIPE`, this attribute is a file object
541 that provides error output from the child process. Otherwise, it is
542 ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000543
544
545.. attribute:: Popen.pid
546
547 The process ID of the child process.
548
Georg Brandl0b56ce02010-03-21 09:28:16 +0000549 Note that if you set the *shell* argument to ``True``, this is the process ID
550 of the spawned shell.
551
Georg Brandl8ec7f652007-08-15 14:28:01 +0000552
553.. attribute:: Popen.returncode
554
Georg Brandl2cb103f2008-01-06 16:01:26 +0000555 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
556 by :meth:`communicate`). A ``None`` value indicates that the process
557 hasn't terminated yet.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000558
Georg Brandl2cb103f2008-01-06 16:01:26 +0000559 A negative value ``-N`` indicates that the child was terminated by signal
560 ``N`` (Unix only).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000561
562
Brian Curtinbb23bd62011-04-29 22:23:46 -0500563Windows Popen Helpers
564---------------------
565
566The :class:`STARTUPINFO` class and following constants are only available
567on Windows.
568
569.. class:: STARTUPINFO()
570
571 Partial support of the Windows
572 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
573 structure is used for :class:`Popen` creation.
574
575 .. attribute:: dwFlags
576
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700577 A bit field that determines whether certain :class:`STARTUPINFO`
578 attributes are used when the process creates a window. ::
Brian Curtinbb23bd62011-04-29 22:23:46 -0500579
580 si = subprocess.STARTUPINFO()
581 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
582
583 .. attribute:: hStdInput
584
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700585 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
586 is the standard input handle for the process. If
587 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
588 input is the keyboard buffer.
Brian Curtinbb23bd62011-04-29 22:23:46 -0500589
590 .. attribute:: hStdOutput
591
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700592 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
593 is the standard output handle for the process. Otherwise, this attribute
594 is ignored and the default for standard output is the console window's
Brian Curtinbb23bd62011-04-29 22:23:46 -0500595 buffer.
596
597 .. attribute:: hStdError
598
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700599 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
600 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500601 ignored and the default for standard error is the console window's buffer.
602
603 .. attribute:: wShowWindow
604
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700605 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtinbb23bd62011-04-29 22:23:46 -0500606 can be any of the values that can be specified in the ``nCmdShow``
607 parameter for the
608 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700609 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500610 ignored.
611
612 :data:`SW_HIDE` is provided for this attribute. It is used when
613 :class:`Popen` is called with ``shell=True``.
614
615
616Constants
617^^^^^^^^^
618
619The :mod:`subprocess` module exposes the following constants.
620
621.. data:: STD_INPUT_HANDLE
622
623 The standard input device. Initially, this is the console input buffer,
624 ``CONIN$``.
625
626.. data:: STD_OUTPUT_HANDLE
627
628 The standard output device. Initially, this is the active console screen
629 buffer, ``CONOUT$``.
630
631.. data:: STD_ERROR_HANDLE
632
633 The standard error device. Initially, this is the active console screen
634 buffer, ``CONOUT$``.
635
636.. data:: SW_HIDE
637
638 Hides the window. Another window will be activated.
639
640.. data:: STARTF_USESTDHANDLES
641
642 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700643 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtinbb23bd62011-04-29 22:23:46 -0500644 contain additional information.
645
646.. data:: STARTF_USESHOWWINDOW
647
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700648 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtinbb23bd62011-04-29 22:23:46 -0500649 additional information.
650
651.. data:: CREATE_NEW_CONSOLE
652
653 The new process has a new console, instead of inheriting its parent's
654 console (the default).
655
656 This flag is always set when :class:`Popen` is created with ``shell=True``.
657
658.. data:: CREATE_NEW_PROCESS_GROUP
659
660 A :class:`Popen` ``creationflags`` parameter to specify that a new process
661 group will be created. This flag is necessary for using :func:`os.kill`
662 on the subprocess.
663
664 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
665
666
Georg Brandl0ba92b22008-06-22 09:05:29 +0000667.. _subprocess-replacements:
668
Georg Brandl8ec7f652007-08-15 14:28:01 +0000669Replacing Older Functions with the subprocess Module
670----------------------------------------------------
671
Nick Coghlan86711572011-10-24 22:19:40 +1000672In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000673
674.. note::
675
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000676 All "a" functions in this section fail (more or less) silently if the
677 executed program cannot be found; the "b" replacements raise :exc:`OSError`
678 instead.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000679
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000680 In addition, the replacements using :func:`check_output` will fail with a
681 :exc:`CalledProcessError` if the requested operation produces a non-zero
682 return code. The output is still available as the ``output`` attribute of
683 the raised exception.
684
685In the following examples, we assume that the relevant functions have already
686been imported from the subprocess module.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000687
688
689Replacing /bin/sh shell backquote
690^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
691
692::
693
694 output=`mycmd myarg`
Nick Coghlan86711572011-10-24 22:19:40 +1000695 # becomes
696 output = check_output(["mycmd", "myarg"])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000697
698
Benjamin Petersoncae58482008-10-10 20:38:49 +0000699Replacing shell pipeline
700^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000701
702::
703
704 output=`dmesg | grep hda`
Nick Coghlan86711572011-10-24 22:19:40 +1000705 # becomes
Georg Brandl8ec7f652007-08-15 14:28:01 +0000706 p1 = Popen(["dmesg"], stdout=PIPE)
707 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000708 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000709 output = p2.communicate()[0]
710
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000711The p1.stdout.close() call after starting the p2 is important in order for p1
712to receive a SIGPIPE if p2 exits before p1.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000713
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000714Alternatively, for trusted input, the shell's own pipeline support may still
R David Murray5fc56eb2012-04-03 08:46:05 -0400715be used directly::
Nick Coghlan86711572011-10-24 22:19:40 +1000716
717 output=`dmesg | grep hda`
718 # becomes
719 output=check_output("dmesg | grep hda", shell=True)
720
721
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000722Replacing :func:`os.system`
723^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000724
725::
726
727 sts = os.system("mycmd" + " myarg")
Nick Coghlan86711572011-10-24 22:19:40 +1000728 # becomes
729 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000730
731Notes:
732
733* Calling the program through the shell is usually not required.
734
Georg Brandl8ec7f652007-08-15 14:28:01 +0000735A more realistic example would look like this::
736
737 try:
738 retcode = call("mycmd" + " myarg", shell=True)
739 if retcode < 0:
740 print >>sys.stderr, "Child was terminated by signal", -retcode
741 else:
742 print >>sys.stderr, "Child returned", retcode
743 except OSError, e:
744 print >>sys.stderr, "Execution failed:", e
745
746
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000747Replacing the :func:`os.spawn <os.spawnl>` family
748^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000749
750P_NOWAIT example::
751
752 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
753 ==>
754 pid = Popen(["/bin/mycmd", "myarg"]).pid
755
756P_WAIT example::
757
758 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
759 ==>
760 retcode = call(["/bin/mycmd", "myarg"])
761
762Vector example::
763
764 os.spawnvp(os.P_NOWAIT, path, args)
765 ==>
766 Popen([path] + args[1:])
767
768Environment example::
769
770 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
771 ==>
772 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
773
774
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000775Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
776^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000777
778::
779
Philip Jenvey8b902042009-09-29 19:10:15 +0000780 pipe = os.popen("cmd", 'r', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000781 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000782 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout
Georg Brandl8ec7f652007-08-15 14:28:01 +0000783
784::
785
Philip Jenvey8b902042009-09-29 19:10:15 +0000786 pipe = os.popen("cmd", 'w', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000787 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000788 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdin=PIPE).stdin
Georg Brandl8ec7f652007-08-15 14:28:01 +0000789
790::
791
Philip Jenvey8b902042009-09-29 19:10:15 +0000792 (child_stdin, child_stdout) = os.popen2("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000793 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000794 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000795 stdin=PIPE, stdout=PIPE, close_fds=True)
796 (child_stdin, child_stdout) = (p.stdin, p.stdout)
797
798::
799
800 (child_stdin,
801 child_stdout,
Philip Jenvey8b902042009-09-29 19:10:15 +0000802 child_stderr) = os.popen3("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000803 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000804 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000805 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
806 (child_stdin,
807 child_stdout,
808 child_stderr) = (p.stdin, p.stdout, p.stderr)
809
810::
811
Philip Jenvey8b902042009-09-29 19:10:15 +0000812 (child_stdin, child_stdout_and_stderr) = os.popen4("cmd", mode,
813 bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000814 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000815 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000816 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
817 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
818
Philip Jenvey8b902042009-09-29 19:10:15 +0000819On Unix, os.popen2, os.popen3 and os.popen4 also accept a sequence as
820the command to execute, in which case arguments will be passed
821directly to the program without shell intervention. This usage can be
822replaced as follows::
823
824 (child_stdin, child_stdout) = os.popen2(["/bin/ls", "-l"], mode,
825 bufsize)
826 ==>
827 p = Popen(["/bin/ls", "-l"], bufsize=bufsize, stdin=PIPE, stdout=PIPE)
828 (child_stdin, child_stdout) = (p.stdin, p.stdout)
829
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000830Return code handling translates as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000831
Philip Jenvey8b902042009-09-29 19:10:15 +0000832 pipe = os.popen("cmd", 'w')
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000833 ...
834 rc = pipe.close()
Stefan Kraha253dc12010-07-14 10:06:07 +0000835 if rc is not None and rc >> 8:
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000836 print "There were some errors"
837 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000838 process = Popen("cmd", 'w', shell=True, stdin=PIPE)
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000839 ...
840 process.stdin.close()
841 if process.wait() != 0:
842 print "There were some errors"
843
844
845Replacing functions from the :mod:`popen2` module
846^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000847
Georg Brandl8ec7f652007-08-15 14:28:01 +0000848::
849
850 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
851 ==>
852 p = Popen(["somestring"], shell=True, bufsize=bufsize,
853 stdin=PIPE, stdout=PIPE, close_fds=True)
854 (child_stdout, child_stdin) = (p.stdout, p.stdin)
855
Philip Jenvey8b902042009-09-29 19:10:15 +0000856On Unix, popen2 also accepts a sequence as the command to execute, in
857which case arguments will be passed directly to the program without
858shell intervention. This usage can be replaced as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000859
Philip Jenvey8b902042009-09-29 19:10:15 +0000860 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize,
861 mode)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000862 ==>
863 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
864 stdin=PIPE, stdout=PIPE, close_fds=True)
865 (child_stdout, child_stdin) = (p.stdout, p.stdin)
866
Georg Brandlf5d5a662008-12-06 11:57:12 +0000867:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
868:class:`subprocess.Popen`, except that:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000869
Georg Brandlf5d5a662008-12-06 11:57:12 +0000870* :class:`Popen` raises an exception if the execution fails.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000871
872* the *capturestderr* argument is replaced with the *stderr* argument.
873
Georg Brandlf5d5a662008-12-06 11:57:12 +0000874* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000875
876* popen2 closes all file descriptors by default, but you have to specify
Georg Brandlf5d5a662008-12-06 11:57:12 +0000877 ``close_fds=True`` with :class:`Popen`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000878
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000879
Eli Bendersky929e2762011-04-15 07:35:06 +0300880Notes
881-----
882
883.. _converting-argument-sequence:
884
885Converting an argument sequence to a string on Windows
886^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
887
888On Windows, an *args* sequence is converted to a string that can be parsed
889using the following rules (which correspond to the rules used by the MS C
890runtime):
891
8921. Arguments are delimited by white space, which is either a
893 space or a tab.
894
8952. A string surrounded by double quotation marks is
896 interpreted as a single argument, regardless of white space
897 contained within. A quoted string can be embedded in an
898 argument.
899
9003. A double quotation mark preceded by a backslash is
901 interpreted as a literal double quotation mark.
902
9034. Backslashes are interpreted literally, unless they
904 immediately precede a double quotation mark.
905
9065. If backslashes immediately precede a double quotation mark,
907 every pair of backslashes is interpreted as a literal
908 backslash. If the number of backslashes is odd, the last
909 backslash escapes the next double quotation mark as
910 described in rule 3.
911