blob: 274a6d9e51fc19569c83fb15942ca11c4623da5c [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
175.. _frequently-used-arguments:
176
177Frequently Used Arguments
178^^^^^^^^^^^^^^^^^^^^^^^^^
179
180To support a wide variety of use cases, the :class:`Popen` constructor (and
181the convenience functions) accept a large number of optional arguments. For
182most typical use cases, many of these arguments can be safely left at their
183default values. The arguments that are most commonly needed are:
184
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000185 *args* is required for all calls and should be a string, or a sequence of
186 program arguments. Providing a sequence of arguments is generally
187 preferred, as it allows the module to take care of any required escaping
188 and quoting of arguments (e.g. to permit spaces in file names). If passing
189 a single string, either *shell* must be :const:`True` (see below) or else
190 the string must simply name the program to be executed without specifying
191 any arguments.
Nick Coghlan86711572011-10-24 22:19:40 +1000192
193 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
194 standard output and standard error file handles, respectively. Valid values
195 are :data:`PIPE`, an existing file descriptor (a positive integer), an
196 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
197 to the child should be created. With the default settings of ``None``, no
198 redirection will occur; the child's file handles will be inherited from the
199 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
200 the stderr data from the child process should be captured into the same file
201 handle as for stdout.
202
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000203 When *stdout* or *stderr* are pipes and *universal_newlines* is
Nick Coghlan65ad31a2011-10-26 21:15:53 +1000204 :const:`True` then all line endings will be converted to ``'\n'`` as
205 described for the universal newlines `'U'`` mode argument to :func:`open`.
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000206
207 If *shell* is :const:`True`, the specified command will be executed through
208 the shell. This can be useful if you are using Python primarily for the
209 enhanced control flow it offers over most system shells and still want
210 access to other shell features such as filename wildcards, shell pipes and
211 environment variable expansion.
212
213 .. warning::
214
215 Executing shell commands that incorporate unsanitized input from an
216 untrusted source makes a program vulnerable to `shell injection
217 <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
218 a serious security flaw which can result in arbitrary command execution.
219 For this reason, the use of *shell=True* is **strongly discouraged** in cases
220 where the command string is constructed from external input::
221
222 >>> from subprocess import call
223 >>> filename = input("What file would you like to display?\n")
224 What file would you like to display?
225 non_existent; rm -rf / #
226 >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
227
228 ``shell=False`` disables all shell based features, but does not suffer
229 from this vulnerability; see the Note in the :class:`Popen` constructor
230 documentation for helpful hints in getting ``shell=False`` to work.
231
Nick Coghlan86711572011-10-24 22:19:40 +1000232These options, along with all of the other options, are described in more
233detail in the :class:`Popen` constructor documentation.
234
235
Sandro Tosidbcbd102011-12-25 11:27:22 +0100236Popen Constructor
Sandro Tosi44585bd2011-12-25 17:13:10 +0100237^^^^^^^^^^^^^^^^^
Nick Coghlan86711572011-10-24 22:19:40 +1000238
239The underlying process creation and management in this module is handled by
240the :class:`Popen` class. It offers a lot of flexibility so that developers
241are able to handle the less common cases not covered by the convenience
242functions.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000243
244
245.. 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)
246
247 Arguments are:
248
Benjamin Petersonfff5cf62008-07-27 15:22:14 +0000249 *args* should be a string, or a sequence of program arguments. The program
R. David Murrayfe6e7842009-05-29 19:30:27 +0000250 to execute is normally the first item in the args sequence or the string if
251 a string is given, but can be explicitly set by using the *executable*
252 argument. When *executable* is given, the first item in the args sequence
253 is still treated by most programs as the command name, which can then be
254 different from the actual executable name. On Unix, it becomes the display
255 name for the executing program in utilities such as :program:`ps`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000256
257 On Unix, with *shell=False* (default): In this case, the Popen class uses
258 :meth:`os.execvp` to execute the child program. *args* should normally be a
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000259 sequence. If a string is specified for *args*, it will be used as the name
260 or path of the program to execute; this will only work if the program is
261 being given no arguments.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000262
Nick Coghlan7dfc9e12010-02-04 12:43:58 +0000263 .. note::
264
265 :meth:`shlex.split` can be useful when determining the correct
266 tokenization for *args*, especially in complex cases::
267
268 >>> import shlex, subprocess
269 >>> command_line = raw_input()
270 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
271 >>> args = shlex.split(command_line)
272 >>> print args
273 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
274 >>> p = subprocess.Popen(args) # Success!
275
276 Note in particular that options (such as *-input*) and arguments (such
277 as *eggs.txt*) that are separated by whitespace in the shell go in separate
278 list elements, while arguments that need quoting or backslash escaping when
279 used in the shell (such as filenames containing spaces or the *echo* command
280 shown above) are single list elements.
281
282 On Unix, with *shell=True*: If args is a string, it specifies the command
283 string to execute through the shell. This means that the string must be
284 formatted exactly as it would be when typed at the shell prompt. This
285 includes, for example, quoting or backslash escaping filenames with spaces in
286 them. If *args* is a sequence, the first item specifies the command string, and
287 any additional items will be treated as additional arguments to the shell
288 itself. That is to say, *Popen* does the equivalent of::
289
290 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000291
292 On Windows: the :class:`Popen` class uses CreateProcess() to execute the child
Eli Bendersky929e2762011-04-15 07:35:06 +0300293 child program, which operates on strings. If *args* is a sequence, it will
294 be converted to a string in a manner described in
295 :ref:`converting-argument-sequence`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000296
297 *bufsize*, if given, has the same meaning as the corresponding argument to the
298 built-in open() function: :const:`0` means unbuffered, :const:`1` means line
299 buffered, any other positive value means use a buffer of (approximately) that
300 size. A negative *bufsize* means to use the system default, which usually means
301 fully buffered. The default value for *bufsize* is :const:`0` (unbuffered).
302
Antoine Pitrouc3955452010-06-02 17:08:47 +0000303 .. note::
304
305 If you experience performance issues, it is recommended that you try to
306 enable buffering by setting *bufsize* to either -1 or a large enough
307 positive value (such as 4096).
308
Georg Brandl8ec7f652007-08-15 14:28:01 +0000309 The *executable* argument specifies the program to execute. It is very seldom
310 needed: Usually, the program to execute is defined by the *args* argument. If
311 ``shell=True``, the *executable* argument specifies which shell to use. On Unix,
312 the default shell is :file:`/bin/sh`. On Windows, the default shell is
Georg Brandl0d8649a2009-06-30 16:17:28 +0000313 specified by the :envvar:`COMSPEC` environment variable. The only reason you
314 would need to specify ``shell=True`` on Windows is where the command you
315 wish to execute is actually built in to the shell, eg ``dir``, ``copy``.
316 You don't need ``shell=True`` to run a batch file, nor to run a console-based
317 executable.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000318
Nick Coghlan86711572011-10-24 22:19:40 +1000319 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlf5d5a662008-12-06 11:57:12 +0000320 standard output and standard error file handles, respectively. Valid values
321 are :data:`PIPE`, an existing file descriptor (a positive integer), an
322 existing file object, and ``None``. :data:`PIPE` indicates that a new pipe
Nick Coghlan86711572011-10-24 22:19:40 +1000323 to the child should be created. With the default settings of ``None``, no
324 redirection will occur; the child's file handles will be inherited from the
325 parent. Additionally, *stderr* can be :data:`STDOUT`, which indicates that
326 the stderr data from the child process should be captured into the same file
327 handle as for stdout.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000328
329 If *preexec_fn* is set to a callable object, this object will be called in the
330 child process just before the child is executed. (Unix only)
331
332 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
333 :const:`2` will be closed before the child process is executed. (Unix only).
334 Or, on Windows, if *close_fds* is true then no handles will be inherited by the
335 child process. Note that on Windows, you cannot set *close_fds* to true and
336 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
337
338 If *shell* is :const:`True`, the specified command will be executed through the
339 shell.
340
Nick Coghlan87ba6422011-10-27 17:55:13 +1000341 .. warning::
Nick Coghlan65ad31a2011-10-26 21:15:53 +1000342
343 Enabling this option can be a security hazard if combined with untrusted
344 input. See the warning under :ref:`frequently-used-arguments`
345 for details.
346
Georg Brandl8ec7f652007-08-15 14:28:01 +0000347 If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
348 before it is executed. Note that this directory is not considered when
349 searching the executable, so you can't specify the program's path relative to
350 *cwd*.
351
Georg Brandlf801b0f2008-04-19 16:58:49 +0000352 If *env* is not ``None``, it must be a mapping that defines the environment
353 variables for the new process; these are used instead of inheriting the current
354 process' environment, which is the default behavior.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000355
R. David Murray72030812009-04-16 18:12:53 +0000356 .. note::
R. David Murray6076d392009-04-15 22:33:07 +0000357
R. David Murray72030812009-04-16 18:12:53 +0000358 If specified, *env* must provide any variables required
359 for the program to execute. On Windows, in order to run a
360 `side-by-side assembly`_ the specified *env* **must** include a valid
R. David Murray6076d392009-04-15 22:33:07 +0000361 :envvar:`SystemRoot`.
362
R. David Murray72030812009-04-16 18:12:53 +0000363 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
364
Georg Brandl8ec7f652007-08-15 14:28:01 +0000365 If *universal_newlines* is :const:`True`, the file objects stdout and stderr are
366 opened as text files, but lines may be terminated by any of ``'\n'``, the Unix
Georg Brandl9af94982008-09-13 17:41:16 +0000367 end-of-line convention, ``'\r'``, the old Macintosh convention or ``'\r\n'``, the
Georg Brandl8ec7f652007-08-15 14:28:01 +0000368 Windows convention. All of these external representations are seen as ``'\n'``
369 by the Python program.
370
371 .. note::
372
Georg Brandl6ab5d082009-12-20 14:33:20 +0000373 This feature is only available if Python is built with universal newline
374 support (the default). Also, the newlines attribute of the file objects
375 :attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
376 communicate() method.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000377
Brian Curtinbb23bd62011-04-29 22:23:46 -0500378 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
379 passed to the underlying ``CreateProcess`` function.
380 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
381 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000382
383
Georg Brandl8ec7f652007-08-15 14:28:01 +0000384Exceptions
385^^^^^^^^^^
386
387Exceptions raised in the child process, before the new program has started to
388execute, will be re-raised in the parent. Additionally, the exception object
389will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl21946af2010-10-06 09:28:45 +0000390containing traceback information from the child's point of view.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000391
392The most common exception raised is :exc:`OSError`. This occurs, for example,
393when trying to execute a non-existent file. Applications should prepare for
394:exc:`OSError` exceptions.
395
396A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
397arguments.
398
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000399:func:`check_call` and :func:`check_output` will raise
400:exc:`CalledProcessError` if the called process returns a non-zero return
401code.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000402
403
404Security
405^^^^^^^^
406
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000407Unlike some other popen functions, this implementation will never call a
408system shell implicitly. This means that all characters, including shell
409metacharacters, can safely be passed to child processes. Obviously, if the
410shell is invoked explicitly, then it is the application's responsibility to
Nick Coghlan63c54e82011-10-26 21:34:26 +1000411ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000412
413
414Popen Objects
415-------------
416
417Instances of the :class:`Popen` class have the following methods:
418
419
420.. method:: Popen.poll()
421
Georg Brandl2cb103f2008-01-06 16:01:26 +0000422 Check if child process has terminated. Set and return :attr:`returncode`
423 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000424
425
426.. method:: Popen.wait()
427
Georg Brandl2cb103f2008-01-06 16:01:26 +0000428 Wait for child process to terminate. Set and return :attr:`returncode`
429 attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000430
Georg Brandl143de622008-08-04 06:29:36 +0000431 .. warning::
432
Philip Jenvey26275532009-12-03 02:25:54 +0000433 This will deadlock when using ``stdout=PIPE`` and/or
434 ``stderr=PIPE`` and the child process generates enough output to
435 a pipe such that it blocks waiting for the OS pipe buffer to
436 accept more data. Use :meth:`communicate` to avoid that.
Gregory P. Smith08792502008-08-04 01:03:50 +0000437
Georg Brandl8ec7f652007-08-15 14:28:01 +0000438
439.. method:: Popen.communicate(input=None)
440
441 Interact with process: Send data to stdin. Read data from stdout and stderr,
442 until end-of-file is reached. Wait for process to terminate. The optional
443 *input* argument should be a string to be sent to the child process, or
444 ``None``, if no data should be sent to the child.
445
Georg Brandl17432012008-12-04 21:28:16 +0000446 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000447
Georg Brandl439f2502007-11-24 11:31:46 +0000448 Note that if you want to send data to the process's stdin, you need to create
449 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
450 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
451 ``stderr=PIPE`` too.
452
Georg Brandl2cb103f2008-01-06 16:01:26 +0000453 .. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000454
Georg Brandl2cb103f2008-01-06 16:01:26 +0000455 The data read is buffered in memory, so do not use this method if the data
456 size is large or unlimited.
457
Georg Brandl8ec7f652007-08-15 14:28:01 +0000458
Christian Heimese74c8f22008-04-19 02:23:57 +0000459.. method:: Popen.send_signal(signal)
460
461 Sends the signal *signal* to the child.
462
463 .. note::
464
Brian Curtine5aa8862010-04-02 23:26:06 +0000465 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Ezio Melotti9ccc5812010-04-05 08:16:41 +0000466 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtine5aa8862010-04-02 23:26:06 +0000467 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Georg Brandl734de682008-04-19 08:23:59 +0000468
469 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000470
471
472.. method:: Popen.terminate()
473
474 Stop the child. On Posix OSs the method sends SIGTERM to the
Andrew M. Kuchling64c6a0e2008-04-21 02:08:00 +0000475 child. On Windows the Win32 API function :cfunc:`TerminateProcess` is called
Christian Heimese74c8f22008-04-19 02:23:57 +0000476 to stop the child.
477
Georg Brandl734de682008-04-19 08:23:59 +0000478 .. versionadded:: 2.6
479
Christian Heimese74c8f22008-04-19 02:23:57 +0000480
481.. method:: Popen.kill()
482
483 Kills the child. On Posix OSs the function sends SIGKILL to the child.
Georg Brandl734de682008-04-19 08:23:59 +0000484 On Windows :meth:`kill` is an alias for :meth:`terminate`.
485
486 .. versionadded:: 2.6
Christian Heimese74c8f22008-04-19 02:23:57 +0000487
488
Georg Brandl8ec7f652007-08-15 14:28:01 +0000489The following attributes are also available:
490
Georg Brandl143de622008-08-04 06:29:36 +0000491.. warning::
492
Georg Brandl16a57f62009-04-27 15:29:09 +0000493 Use :meth:`communicate` rather than :attr:`.stdin.write <stdin>`,
494 :attr:`.stdout.read <stdout>` or :attr:`.stderr.read <stderr>` to avoid
495 deadlocks due to any of the other OS pipe buffers filling up and blocking the
496 child process.
Georg Brandl143de622008-08-04 06:29:36 +0000497
498
Georg Brandl8ec7f652007-08-15 14:28:01 +0000499.. attribute:: Popen.stdin
500
Georg Brandlf5d5a662008-12-06 11:57:12 +0000501 If the *stdin* argument was :data:`PIPE`, this attribute is a file object
502 that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000503
504
505.. attribute:: Popen.stdout
506
Georg Brandlf5d5a662008-12-06 11:57:12 +0000507 If the *stdout* argument was :data:`PIPE`, this attribute is a file object
508 that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000509
510
511.. attribute:: Popen.stderr
512
Georg Brandlf5d5a662008-12-06 11:57:12 +0000513 If the *stderr* argument was :data:`PIPE`, this attribute is a file object
514 that provides error output from the child process. Otherwise, it is
515 ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000516
517
518.. attribute:: Popen.pid
519
520 The process ID of the child process.
521
Georg Brandl0b56ce02010-03-21 09:28:16 +0000522 Note that if you set the *shell* argument to ``True``, this is the process ID
523 of the spawned shell.
524
Georg Brandl8ec7f652007-08-15 14:28:01 +0000525
526.. attribute:: Popen.returncode
527
Georg Brandl2cb103f2008-01-06 16:01:26 +0000528 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
529 by :meth:`communicate`). A ``None`` value indicates that the process
530 hasn't terminated yet.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000531
Georg Brandl2cb103f2008-01-06 16:01:26 +0000532 A negative value ``-N`` indicates that the child was terminated by signal
533 ``N`` (Unix only).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000534
535
Brian Curtinbb23bd62011-04-29 22:23:46 -0500536Windows Popen Helpers
537---------------------
538
539The :class:`STARTUPINFO` class and following constants are only available
540on Windows.
541
542.. class:: STARTUPINFO()
543
544 Partial support of the Windows
545 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
546 structure is used for :class:`Popen` creation.
547
548 .. attribute:: dwFlags
549
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700550 A bit field that determines whether certain :class:`STARTUPINFO`
551 attributes are used when the process creates a window. ::
Brian Curtinbb23bd62011-04-29 22:23:46 -0500552
553 si = subprocess.STARTUPINFO()
554 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
555
556 .. attribute:: hStdInput
557
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700558 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
559 is the standard input handle for the process. If
560 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
561 input is the keyboard buffer.
Brian Curtinbb23bd62011-04-29 22:23:46 -0500562
563 .. attribute:: hStdOutput
564
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700565 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
566 is the standard output handle for the process. Otherwise, this attribute
567 is ignored and the default for standard output is the console window's
Brian Curtinbb23bd62011-04-29 22:23:46 -0500568 buffer.
569
570 .. attribute:: hStdError
571
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700572 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
573 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500574 ignored and the default for standard error is the console window's buffer.
575
576 .. attribute:: wShowWindow
577
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700578 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtinbb23bd62011-04-29 22:23:46 -0500579 can be any of the values that can be specified in the ``nCmdShow``
580 parameter for the
581 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700582 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtinbb23bd62011-04-29 22:23:46 -0500583 ignored.
584
585 :data:`SW_HIDE` is provided for this attribute. It is used when
586 :class:`Popen` is called with ``shell=True``.
587
588
589Constants
590^^^^^^^^^
591
592The :mod:`subprocess` module exposes the following constants.
593
594.. data:: STD_INPUT_HANDLE
595
596 The standard input device. Initially, this is the console input buffer,
597 ``CONIN$``.
598
599.. data:: STD_OUTPUT_HANDLE
600
601 The standard output device. Initially, this is the active console screen
602 buffer, ``CONOUT$``.
603
604.. data:: STD_ERROR_HANDLE
605
606 The standard error device. Initially, this is the active console screen
607 buffer, ``CONOUT$``.
608
609.. data:: SW_HIDE
610
611 Hides the window. Another window will be activated.
612
613.. data:: STARTF_USESTDHANDLES
614
615 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700616 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtinbb23bd62011-04-29 22:23:46 -0500617 contain additional information.
618
619.. data:: STARTF_USESHOWWINDOW
620
Senthil Kumaran6f18b982011-07-04 12:50:02 -0700621 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtinbb23bd62011-04-29 22:23:46 -0500622 additional information.
623
624.. data:: CREATE_NEW_CONSOLE
625
626 The new process has a new console, instead of inheriting its parent's
627 console (the default).
628
629 This flag is always set when :class:`Popen` is created with ``shell=True``.
630
631.. data:: CREATE_NEW_PROCESS_GROUP
632
633 A :class:`Popen` ``creationflags`` parameter to specify that a new process
634 group will be created. This flag is necessary for using :func:`os.kill`
635 on the subprocess.
636
637 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
638
639
Georg Brandl0ba92b22008-06-22 09:05:29 +0000640.. _subprocess-replacements:
641
Georg Brandl8ec7f652007-08-15 14:28:01 +0000642Replacing Older Functions with the subprocess Module
643----------------------------------------------------
644
Nick Coghlan86711572011-10-24 22:19:40 +1000645In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000646
647.. note::
648
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000649 All "a" functions in this section fail (more or less) silently if the
650 executed program cannot be found; the "b" replacements raise :exc:`OSError`
651 instead.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000652
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000653 In addition, the replacements using :func:`check_output` will fail with a
654 :exc:`CalledProcessError` if the requested operation produces a non-zero
655 return code. The output is still available as the ``output`` attribute of
656 the raised exception.
657
658In the following examples, we assume that the relevant functions have already
659been imported from the subprocess module.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000660
661
662Replacing /bin/sh shell backquote
663^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
664
665::
666
667 output=`mycmd myarg`
Nick Coghlan86711572011-10-24 22:19:40 +1000668 # becomes
669 output = check_output(["mycmd", "myarg"])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000670
671
Benjamin Petersoncae58482008-10-10 20:38:49 +0000672Replacing shell pipeline
673^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000674
675::
676
677 output=`dmesg | grep hda`
Nick Coghlan86711572011-10-24 22:19:40 +1000678 # becomes
Georg Brandl8ec7f652007-08-15 14:28:01 +0000679 p1 = Popen(["dmesg"], stdout=PIPE)
680 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000681 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000682 output = p2.communicate()[0]
683
Gregory P. Smithe3e967f2011-02-05 21:49:56 +0000684The p1.stdout.close() call after starting the p2 is important in order for p1
685to receive a SIGPIPE if p2 exits before p1.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000686
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000687Alternatively, for trusted input, the shell's own pipeline support may still
688be used directly:
Nick Coghlan86711572011-10-24 22:19:40 +1000689
690 output=`dmesg | grep hda`
691 # becomes
692 output=check_output("dmesg | grep hda", shell=True)
693
694
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000695Replacing :func:`os.system`
696^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000697
698::
699
700 sts = os.system("mycmd" + " myarg")
Nick Coghlan86711572011-10-24 22:19:40 +1000701 # becomes
702 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000703
704Notes:
705
706* Calling the program through the shell is usually not required.
707
Georg Brandl8ec7f652007-08-15 14:28:01 +0000708A more realistic example would look like this::
709
710 try:
711 retcode = call("mycmd" + " myarg", shell=True)
712 if retcode < 0:
713 print >>sys.stderr, "Child was terminated by signal", -retcode
714 else:
715 print >>sys.stderr, "Child returned", retcode
716 except OSError, e:
717 print >>sys.stderr, "Execution failed:", e
718
719
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000720Replacing the :func:`os.spawn <os.spawnl>` family
721^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000722
723P_NOWAIT example::
724
725 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
726 ==>
727 pid = Popen(["/bin/mycmd", "myarg"]).pid
728
729P_WAIT example::
730
731 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
732 ==>
733 retcode = call(["/bin/mycmd", "myarg"])
734
735Vector example::
736
737 os.spawnvp(os.P_NOWAIT, path, args)
738 ==>
739 Popen([path] + args[1:])
740
741Environment example::
742
743 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
744 ==>
745 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
746
747
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000748Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
749^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000750
751::
752
Philip Jenvey8b902042009-09-29 19:10:15 +0000753 pipe = os.popen("cmd", 'r', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000754 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000755 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout
Georg Brandl8ec7f652007-08-15 14:28:01 +0000756
757::
758
Philip Jenvey8b902042009-09-29 19:10:15 +0000759 pipe = os.popen("cmd", 'w', bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000760 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000761 pipe = Popen("cmd", shell=True, bufsize=bufsize, stdin=PIPE).stdin
Georg Brandl8ec7f652007-08-15 14:28:01 +0000762
763::
764
Philip Jenvey8b902042009-09-29 19:10:15 +0000765 (child_stdin, child_stdout) = os.popen2("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000766 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000767 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000768 stdin=PIPE, stdout=PIPE, close_fds=True)
769 (child_stdin, child_stdout) = (p.stdin, p.stdout)
770
771::
772
773 (child_stdin,
774 child_stdout,
Philip Jenvey8b902042009-09-29 19:10:15 +0000775 child_stderr) = os.popen3("cmd", mode, bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000776 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000777 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000778 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
779 (child_stdin,
780 child_stdout,
781 child_stderr) = (p.stdin, p.stdout, p.stderr)
782
783::
784
Philip Jenvey8b902042009-09-29 19:10:15 +0000785 (child_stdin, child_stdout_and_stderr) = os.popen4("cmd", mode,
786 bufsize)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000787 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000788 p = Popen("cmd", shell=True, bufsize=bufsize,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000789 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
790 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
791
Philip Jenvey8b902042009-09-29 19:10:15 +0000792On Unix, os.popen2, os.popen3 and os.popen4 also accept a sequence as
793the command to execute, in which case arguments will be passed
794directly to the program without shell intervention. This usage can be
795replaced as follows::
796
797 (child_stdin, child_stdout) = os.popen2(["/bin/ls", "-l"], mode,
798 bufsize)
799 ==>
800 p = Popen(["/bin/ls", "-l"], bufsize=bufsize, stdin=PIPE, stdout=PIPE)
801 (child_stdin, child_stdout) = (p.stdin, p.stdout)
802
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000803Return code handling translates as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000804
Philip Jenvey8b902042009-09-29 19:10:15 +0000805 pipe = os.popen("cmd", 'w')
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000806 ...
807 rc = pipe.close()
Stefan Kraha253dc12010-07-14 10:06:07 +0000808 if rc is not None and rc >> 8:
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000809 print "There were some errors"
810 ==>
Philip Jenvey8b902042009-09-29 19:10:15 +0000811 process = Popen("cmd", 'w', shell=True, stdin=PIPE)
R. David Murrayccb9d4b2009-06-09 00:44:22 +0000812 ...
813 process.stdin.close()
814 if process.wait() != 0:
815 print "There were some errors"
816
817
818Replacing functions from the :mod:`popen2` module
819^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl8ec7f652007-08-15 14:28:01 +0000820
Georg Brandl8ec7f652007-08-15 14:28:01 +0000821::
822
823 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
824 ==>
825 p = Popen(["somestring"], shell=True, bufsize=bufsize,
826 stdin=PIPE, stdout=PIPE, close_fds=True)
827 (child_stdout, child_stdin) = (p.stdout, p.stdin)
828
Philip Jenvey8b902042009-09-29 19:10:15 +0000829On Unix, popen2 also accepts a sequence as the command to execute, in
830which case arguments will be passed directly to the program without
831shell intervention. This usage can be replaced as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000832
Philip Jenvey8b902042009-09-29 19:10:15 +0000833 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize,
834 mode)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000835 ==>
836 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
837 stdin=PIPE, stdout=PIPE, close_fds=True)
838 (child_stdout, child_stdin) = (p.stdout, p.stdin)
839
Georg Brandlf5d5a662008-12-06 11:57:12 +0000840:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
841:class:`subprocess.Popen`, except that:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000842
Georg Brandlf5d5a662008-12-06 11:57:12 +0000843* :class:`Popen` raises an exception if the execution fails.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000844
845* the *capturestderr* argument is replaced with the *stderr* argument.
846
Georg Brandlf5d5a662008-12-06 11:57:12 +0000847* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000848
849* popen2 closes all file descriptors by default, but you have to specify
Georg Brandlf5d5a662008-12-06 11:57:12 +0000850 ``close_fds=True`` with :class:`Popen`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000851
Nick Coghlan2ed203a2011-10-26 21:05:56 +1000852
Eli Bendersky929e2762011-04-15 07:35:06 +0300853Notes
854-----
855
856.. _converting-argument-sequence:
857
858Converting an argument sequence to a string on Windows
859^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
860
861On Windows, an *args* sequence is converted to a string that can be parsed
862using the following rules (which correspond to the rules used by the MS C
863runtime):
864
8651. Arguments are delimited by white space, which is either a
866 space or a tab.
867
8682. A string surrounded by double quotation marks is
869 interpreted as a single argument, regardless of white space
870 contained within. A quoted string can be embedded in an
871 argument.
872
8733. A double quotation mark preceded by a backslash is
874 interpreted as a literal double quotation mark.
875
8764. Backslashes are interpreted literally, unless they
877 immediately precede a double quotation mark.
878
8795. If backslashes immediately precede a double quotation mark,
880 every pair of backslashes is interpreted as a literal
881 backslash. If the number of backslashes is odd, the last
882 backslash escapes the next double quotation mark as
883 described in rule 3.
884