blob: a67bf646e9cafce0fcd2adb1a382ecb12406bbf4 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`subprocess` --- Subprocess management
2===========================================
3
4.. module:: subprocess
5 :synopsis: Subprocess management.
6.. moduleauthor:: Peter Åstrand <astrand@lysator.liu.se>
7.. sectionauthor:: Peter Åstrand <astrand@lysator.liu.se>
8
9
Georg Brandl116aa622007-08-15 14:28:22 +000010The :mod:`subprocess` module allows you to spawn new processes, connect to their
11input/output/error pipes, and obtain their return codes. This module intends to
12replace several other, older modules and functions, such as::
13
14 os.system
15 os.spawn*
Georg Brandl116aa622007-08-15 14:28:22 +000016
17Information about how the :mod:`subprocess` module can be used to replace these
18modules and functions can be found in the following sections.
19
Benjamin Peterson41181742008-07-02 20:22:54 +000020.. seealso::
21
22 :pep:`324` -- PEP proposing the subprocess module
23
Georg Brandl116aa622007-08-15 14:28:22 +000024
25Using the subprocess Module
26---------------------------
27
Nick Coghlanc29248f2011-11-08 20:49:23 +100028The recommended approach to invoking subprocesses is to use the following
29convenience functions for all use cases they can handle. For more advanced
30use cases, the underlying :class:`Popen` interface can be used directly.
31
32
Nick Coghlan217f05b2011-11-08 22:11:21 +100033.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
Nick Coghlanc29248f2011-11-08 20:49:23 +100034
35 Run the command described by *args*. Wait for command to complete, then
36 return the :attr:`returncode` attribute.
37
38 The arguments shown above are merely the most common ones, described below
Nick Coghlan217f05b2011-11-08 22:11:21 +100039 in :ref:`frequently-used-arguments` (hence the use of keyword-only notation
40 in the abbreviated signature). The full function signature is largely the
41 same as that of the :class:`Popen` constructor - this function passes all
42 supplied arguments other than *timeout* directly through to that interface.
43
44 The *timeout* argument is passed to :meth:`Popen.wait`. If the timeout
45 expires, the child process will be killed and then waited for again. The
46 :exc:`TimeoutExpired` exception will be re-raised after the child process
47 has terminated.
Nick Coghlanc29248f2011-11-08 20:49:23 +100048
49 Examples::
50
51 >>> subprocess.call(["ls", "-l"])
52 0
53
54 >>> subprocess.call("exit 1", shell=True)
55 1
56
57 .. warning::
58
59 Invoking the system shell with ``shell=True`` can be a security hazard
60 if combined with untrusted input. See the warning under
61 :ref:`frequently-used-arguments` for details.
62
63 .. note::
64
65 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
66 the pipes are not being read in the current process, the child
67 process may block if it generates enough output to a pipe to fill up
68 the OS pipe buffer.
69
Nick Coghlan217f05b2011-11-08 22:11:21 +100070 .. versionchanged:: 3.3
71 *timeout* was added.
Nick Coghlanc29248f2011-11-08 20:49:23 +100072
Nick Coghlan217f05b2011-11-08 22:11:21 +100073
74.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
Nick Coghlanc29248f2011-11-08 20:49:23 +100075
76 Run command with arguments. Wait for command to complete. If the return
77 code was zero then return, otherwise raise :exc:`CalledProcessError`. The
78 :exc:`CalledProcessError` object will have the return code in the
79 :attr:`returncode` attribute.
80
81 The arguments shown above are merely the most common ones, described below
Nick Coghlan217f05b2011-11-08 22:11:21 +100082 in :ref:`frequently-used-arguments` (hence the use of keyword-only notation
83 in the abbreviated signature). The full function signature is largely the
84 same as that of the :class:`Popen` constructor - this function passes all
85 supplied arguments other than *timeout* directly through to that interface.
86
87 The *timeout* argument is passed to :meth:`Popen.wait`. If the timeout
88 expires, the child process will be killed and then waited for again. The
89 :exc:`TimeoutExpired` exception will be re-raised after the child process
90 has terminated.
Nick Coghlanc29248f2011-11-08 20:49:23 +100091
92 Examples::
93
94 >>> subprocess.check_call(["ls", "-l"])
95 0
96
97 >>> subprocess.check_call("exit 1", shell=True)
98 Traceback (most recent call last):
99 ...
100 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
101
Nick Coghlanc29248f2011-11-08 20:49:23 +1000102 .. warning::
103
104 Invoking the system shell with ``shell=True`` can be a security hazard
105 if combined with untrusted input. See the warning under
106 :ref:`frequently-used-arguments` for details.
107
108 .. note::
109
110 Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function. As
111 the pipes are not being read in the current process, the child
112 process may block if it generates enough output to a pipe to fill up
113 the OS pipe buffer.
114
Nick Coghlan217f05b2011-11-08 22:11:21 +1000115 .. versionchanged:: 3.3
116 *timeout* was added.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000117
Nick Coghlan217f05b2011-11-08 22:11:21 +1000118
119.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False, timeout=None)
Nick Coghlanc29248f2011-11-08 20:49:23 +1000120
121 Run command with arguments and return its output as a byte string.
122
123 If the return code was non-zero it raises a :exc:`CalledProcessError`. The
124 :exc:`CalledProcessError` object will have the return code in the
125 :attr:`returncode` attribute and any output in the :attr:`output`
126 attribute.
127
128 The arguments shown above are merely the most common ones, described below
Nick Coghlan217f05b2011-11-08 22:11:21 +1000129 in :ref:`frequently-used-arguments` (hence the use of keyword-only notation
130 in the abbreviated signature). The full function signature is largely the
131 same as that of the :class:`Popen` constructor - this functions passes all
132 supplied arguments other than *timeout* directly through to that interface.
133 In addition, *stdout* is not permitted as an argument, as it is used
134 internally to collect the output from the subprocess.
135
136 The *timeout* argument is passed to :meth:`Popen.wait`. If the timeout
137 expires, the child process will be killed and then waited for again. The
138 :exc:`TimeoutExpired` exception will be re-raised after the child process
139 has terminated.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000140
141 Examples::
142
143 >>> subprocess.check_output(["echo", "Hello World!"])
144 b'Hello World!\n'
145
146 >>> subprocess.check_output(["echo", "Hello World!"], universal_newlines=True)
147 'Hello World!\n'
148
149 >>> subprocess.check_output("exit 1", shell=True)
150 Traceback (most recent call last):
151 ...
152 subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
153
154 By default, this function will return the data as encoded bytes. The actual
155 encoding of the output data may depend on the command being invoked, so the
156 decoding to text will often need to be handled at the application level.
157
158 This behaviour may be overridden by setting *universal_newlines* to
159 :const:`True` as described below in :ref:`frequently-used-arguments`.
160
161 To also capture standard error in the result, use
162 ``stderr=subprocess.STDOUT``::
163
164 >>> subprocess.check_output(
165 ... "ls non_existent_file; exit 0",
166 ... stderr=subprocess.STDOUT,
167 ... shell=True)
168 'ls: non_existent_file: No such file or directory\n'
169
Nick Coghlan217f05b2011-11-08 22:11:21 +1000170 .. versionadded:: 3.1
Nick Coghlanc29248f2011-11-08 20:49:23 +1000171
172 .. warning::
173
174 Invoking the system shell with ``shell=True`` can be a security hazard
175 if combined with untrusted input. See the warning under
176 :ref:`frequently-used-arguments` for details.
177
178 .. note::
179
180 Do not use ``stderr=PIPE`` with this function. As the pipe is not being
181 read in the current process, the child process may block if it
182 generates enough output to the pipe to fill up the OS pipe buffer.
183
Nick Coghlan217f05b2011-11-08 22:11:21 +1000184 .. versionchanged:: 3.3
185 *timeout* was added.
186
187
188.. data:: DEVNULL
189
190 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
191 to :class:`Popen` and indicates that the special file :data:`os.devnull`
192 will be used.
193
194 .. versionadded:: 3.3
195
Nick Coghlanc29248f2011-11-08 20:49:23 +1000196
197.. data:: PIPE
198
199 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
200 to :class:`Popen` and indicates that a pipe to the standard stream should be
201 opened.
202
203
204.. data:: STDOUT
205
206 Special value that can be used as the *stderr* argument to :class:`Popen` and
207 indicates that standard error should go into the same handle as standard
208 output.
209
210
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300211.. exception:: SubprocessError
212
213 Base class for all other exceptions from this module.
214
215 .. versionadded:: 3.3
216
217
218.. exception:: TimeoutExpired
219
220 Subclass of :exc:`SubprocessError`, raised when a timeout expires
221 while waiting for a child process.
222
223 .. attribute:: cmd
224
225 Command that was used to spawn the child process.
226
227 .. attribute:: timeout
228
229 Timeout in seconds.
230
231 .. attribute:: output
232
233 Output of the child process if this exception is raised by
234 :func:`check_output`. Otherwise, ``None``.
235
236 .. versionadded:: 3.3
237
238
239.. exception:: CalledProcessError
240
241 Subclass of :exc:`SubprocessError`, raised when a process run by
242 :func:`check_call` or :func:`check_output` returns a non-zero exit status.
243
244 .. attribute:: returncode
245
246 Exit status of the child process.
247
248 .. attribute:: cmd
249
250 Command that was used to spawn the child process.
251
252 .. attribute:: output
253
254 Output of the child process if this exception is raised by
255 :func:`check_output`. Otherwise, ``None``.
256
257
258
Nick Coghlanc29248f2011-11-08 20:49:23 +1000259.. _frequently-used-arguments:
260
261Frequently Used Arguments
262^^^^^^^^^^^^^^^^^^^^^^^^^
263
264To support a wide variety of use cases, the :class:`Popen` constructor (and
265the convenience functions) accept a large number of optional arguments. For
266most typical use cases, many of these arguments can be safely left at their
267default values. The arguments that are most commonly needed are:
268
269 *args* is required for all calls and should be a string, or a sequence of
270 program arguments. Providing a sequence of arguments is generally
271 preferred, as it allows the module to take care of any required escaping
272 and quoting of arguments (e.g. to permit spaces in file names). If passing
273 a single string, either *shell* must be :const:`True` (see below) or else
274 the string must simply name the program to be executed without specifying
275 any arguments.
276
277 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
278 standard output and standard error file handles, respectively. Valid values
Nick Coghlan217f05b2011-11-08 22:11:21 +1000279 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
280 integer), an existing file object, and ``None``. :data:`PIPE` indicates
281 that a new pipe to the child should be created. :data:`DEVNULL` indicates
282 that the special file :data:`os.devnull` will be used. With the default
283 settings of ``None``, no redirection will occur; the child's file handles
284 will be inherited from the parent. Additionally, *stderr* can be
285 :data:`STDOUT`, which indicates that the stderr data from the child
286 process should be captured into the same file handle as for *stdout*.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000287
288 When *stdout* or *stderr* are pipes and *universal_newlines* is
289 :const:`True` then the output data is assumed to be encoded as UTF-8 and
290 will automatically be decoded to text. All line endings will be converted
Georg Brandleb25fb72012-02-23 21:12:39 +0100291 to ``'\n'`` as described for the universal newlines ``'U'`` mode argument
Nick Coghlanc29248f2011-11-08 20:49:23 +1000292 to :func:`open`.
293
294 If *shell* is :const:`True`, the specified command will be executed through
295 the shell. This can be useful if you are using Python primarily for the
296 enhanced control flow it offers over most system shells and still want
297 access to other shell features such as filename wildcards, shell pipes and
298 environment variable expansion.
299
300 .. warning::
301
302 Executing shell commands that incorporate unsanitized input from an
303 untrusted source makes a program vulnerable to `shell injection
304 <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
305 a serious security flaw which can result in arbitrary command execution.
306 For this reason, the use of *shell=True* is **strongly discouraged** in cases
307 where the command string is constructed from external input::
308
309 >>> from subprocess import call
310 >>> filename = input("What file would you like to display?\n")
311 What file would you like to display?
312 non_existent; rm -rf / #
313 >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
314
315 ``shell=False`` disables all shell based features, but does not suffer
316 from this vulnerability; see the Note in the :class:`Popen` constructor
317 documentation for helpful hints in getting ``shell=False`` to work.
318
319These options, along with all of the other options, are described in more
320detail in the :class:`Popen` constructor documentation.
321
322
Sandro Tosi1526ad12011-12-25 11:27:37 +0100323Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100324^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000325
326The underlying process creation and management in this module is handled by
327the :class:`Popen` class. It offers a lot of flexibility so that developers
328are able to handle the less common cases not covered by the convenience
329functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000330
331
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000332.. class:: Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334 Arguments are:
335
Benjamin Petersond18de0e2008-07-31 20:21:46 +0000336 *args* should be a string, or a sequence of program arguments. The program
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000337 to execute is normally the first item in the args sequence or the string if
338 a string is given, but can be explicitly set by using the *executable*
339 argument. When *executable* is given, the first item in the args sequence
340 is still treated by most programs as the command name, which can then be
341 different from the actual executable name. On Unix, it becomes the display
342 name for the executing program in utilities such as :program:`ps`.
Georg Brandl116aa622007-08-15 14:28:22 +0000343
344 On Unix, with *shell=False* (default): In this case, the Popen class uses
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000345 :meth:`os.execvp` like behavior to execute the child program.
346 *args* should normally be a
R. David Murray5973e4d2010-02-04 16:41:57 +0000347 sequence. If a string is specified for *args*, it will be used as the name
348 or path of the program to execute; this will only work if the program is
349 being given no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000350
R. David Murray5973e4d2010-02-04 16:41:57 +0000351 .. note::
352
353 :meth:`shlex.split` can be useful when determining the correct
354 tokenization for *args*, especially in complex cases::
355
356 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000357 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000358 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
359 >>> args = shlex.split(command_line)
360 >>> print(args)
361 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
362 >>> p = subprocess.Popen(args) # Success!
363
364 Note in particular that options (such as *-input*) and arguments (such
365 as *eggs.txt*) that are separated by whitespace in the shell go in separate
366 list elements, while arguments that need quoting or backslash escaping when
367 used in the shell (such as filenames containing spaces or the *echo* command
368 shown above) are single list elements.
369
370 On Unix, with *shell=True*: If args is a string, it specifies the command
371 string to execute through the shell. This means that the string must be
372 formatted exactly as it would be when typed at the shell prompt. This
373 includes, for example, quoting or backslash escaping filenames with spaces in
374 them. If *args* is a sequence, the first item specifies the command string, and
375 any additional items will be treated as additional arguments to the shell
376 itself. That is to say, *Popen* does the equivalent of::
377
378 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000379
R. David Murrayc7399d02010-11-12 00:35:31 +0000380 .. warning::
381
Nick Coghlanc29248f2011-11-08 20:49:23 +1000382 Enabling this option can be a security hazard if combined with untrusted
383 input. See the warning under :ref:`frequently-used-arguments`
384 for details.
R. David Murrayc7399d02010-11-12 00:35:31 +0000385
Eli Bendersky046a7642011-04-15 07:23:26 +0300386 On Windows: the :class:`Popen` class uses CreateProcess() to execute the
387 child program, which operates on strings. If *args* is a sequence, it will
388 be converted to a string in a manner described in
389 :ref:`converting-argument-sequence`.
Georg Brandl116aa622007-08-15 14:28:22 +0000390
391 *bufsize*, if given, has the same meaning as the corresponding argument to the
392 built-in open() function: :const:`0` means unbuffered, :const:`1` means line
393 buffered, any other positive value means use a buffer of (approximately) that
394 size. A negative *bufsize* means to use the system default, which usually means
395 fully buffered. The default value for *bufsize* is :const:`0` (unbuffered).
396
Antoine Pitrou4b876202010-06-02 17:10:49 +0000397 .. note::
398
399 If you experience performance issues, it is recommended that you try to
400 enable buffering by setting *bufsize* to either -1 or a large enough
401 positive value (such as 4096).
402
Georg Brandl116aa622007-08-15 14:28:22 +0000403 The *executable* argument specifies the program to execute. It is very seldom
404 needed: Usually, the program to execute is defined by the *args* argument. If
405 ``shell=True``, the *executable* argument specifies which shell to use. On Unix,
406 the default shell is :file:`/bin/sh`. On Windows, the default shell is
Alexandre Vassalotti260484d2009-07-17 11:43:26 +0000407 specified by the :envvar:`COMSPEC` environment variable. The only reason you
408 would need to specify ``shell=True`` on Windows is where the command you
409 wish to execute is actually built in to the shell, eg ``dir``, ``copy``.
410 You don't need ``shell=True`` to run a batch file, nor to run a console-based
411 executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000412
Nick Coghlanc29248f2011-11-08 20:49:23 +1000413 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000414 standard output and standard error file handles, respectively. Valid values
Ross Lagerwallba102ec2011-03-16 18:40:25 +0200415 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
416 integer), an existing :term:`file object`, and ``None``. :data:`PIPE`
417 indicates that a new pipe to the child should be created. :data:`DEVNULL`
Nick Coghlan217f05b2011-11-08 22:11:21 +1000418 indicates that the special file :data:`os.devnull` will be used. With the
419 default settings of ``None``, no redirection will occur; the child's file
420 handles will be inherited from the parent. Additionally, *stderr* can be
421 :data:`STDOUT`, which indicates that the stderr data from the applications
422 should be captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000423
424 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000425 child process just before the child is executed.
426 (Unix only)
427
428 .. warning::
429
430 The *preexec_fn* parameter is not safe to use in the presence of threads
431 in your application. The child process could deadlock before exec is
432 called.
433 If you must use it, keep it trivial! Minimize the number of libraries
434 you call into.
435
436 .. note::
437
438 If you need to modify the environment for the child use the *env*
439 parameter rather than doing it in a *preexec_fn*.
440 The *start_new_session* parameter can take the place of a previously
441 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000442
443 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
444 :const:`2` will be closed before the child process is executed. (Unix only).
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000445 The default varies by platform: Always true on Unix. On Windows it is
446 true when *stdin*/*stdout*/*stderr* are :const:`None`, false otherwise.
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000447 On Windows, if *close_fds* is true then no handles will be inherited by the
Georg Brandl116aa622007-08-15 14:28:22 +0000448 child process. Note that on Windows, you cannot set *close_fds* to true and
449 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
450
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000451 .. versionchanged:: 3.2
452 The default for *close_fds* was changed from :const:`False` to
453 what is described above.
454
455 *pass_fds* is an optional sequence of file descriptors to keep open
456 between the parent and child. Providing any *pass_fds* forces
457 *close_fds* to be :const:`True`. (Unix only)
458
459 .. versionadded:: 3.2
460 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000461
462 If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
463 before it is executed. Note that this directory is not considered when
464 searching the executable, so you can't specify the program's path relative to
465 *cwd*.
466
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000467 If *restore_signals* is True (the default) all signals that Python has set to
468 SIG_IGN are restored to SIG_DFL in the child process before the exec.
469 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
470 (Unix only)
471
472 .. versionchanged:: 3.2
473 *restore_signals* was added.
474
475 If *start_new_session* is True the setsid() system call will be made in the
476 child process prior to the execution of the subprocess. (Unix only)
477
478 .. versionchanged:: 3.2
479 *start_new_session* was added.
480
Christian Heimesa342c012008-04-20 21:01:16 +0000481 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000482 variables for the new process; these are used instead of the default
483 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000484
R. David Murray1055e892009-04-16 18:15:32 +0000485 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000486
Georg Brandl2708f3a2009-12-20 14:38:23 +0000487 If specified, *env* must provide any variables required for the program to
488 execute. On Windows, in order to run a `side-by-side assembly`_ the
489 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000490
R. David Murray1055e892009-04-16 18:15:32 +0000491 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
492
Georg Brandl116aa622007-08-15 14:28:22 +0000493 If *universal_newlines* is :const:`True`, the file objects stdout and stderr are
494 opened as text files, but lines may be terminated by any of ``'\n'``, the Unix
Georg Brandlc575c902008-09-13 17:46:05 +0000495 end-of-line convention, ``'\r'``, the old Macintosh convention or ``'\r\n'``, the
Georg Brandl116aa622007-08-15 14:28:22 +0000496 Windows convention. All of these external representations are seen as ``'\n'``
497 by the Python program.
498
499 .. note::
500
Georg Brandl7f01a132009-09-16 15:58:14 +0000501 This feature is only available if Python is built with universal newline
502 support (the default). Also, the newlines attribute of the file objects
503 :attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
504 :meth:`communicate` method.
Georg Brandl116aa622007-08-15 14:28:22 +0000505
Brian Curtine6242d72011-04-29 22:17:51 -0500506 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
507 passed to the underlying ``CreateProcess`` function.
Brian Curtin30401932011-04-29 22:20:57 -0500508 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
509 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl116aa622007-08-15 14:28:22 +0000510
Gregory P. Smith6b657452011-05-11 21:42:08 -0700511 Popen objects are supported as context managers via the :keyword:`with` statement:
512 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000513 ::
514
515 with Popen(["ifconfig"], stdout=PIPE) as proc:
516 log.write(proc.stdout.read())
517
518 .. versionchanged:: 3.2
519 Added context manager support.
520
Georg Brandl116aa622007-08-15 14:28:22 +0000521
Georg Brandl116aa622007-08-15 14:28:22 +0000522Exceptions
523^^^^^^^^^^
524
525Exceptions raised in the child process, before the new program has started to
526execute, will be re-raised in the parent. Additionally, the exception object
527will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000528containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000529
530The most common exception raised is :exc:`OSError`. This occurs, for example,
531when trying to execute a non-existent file. Applications should prepare for
532:exc:`OSError` exceptions.
533
534A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
535arguments.
536
Nick Coghlanc29248f2011-11-08 20:49:23 +1000537:func:`check_call` and :func:`check_output` will raise
538:exc:`CalledProcessError` if the called process returns a non-zero return
539code.
Georg Brandl116aa622007-08-15 14:28:22 +0000540
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400541All of the functions and methods that accept a *timeout* parameter, such as
542:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
543the timeout expires before the process exits.
544
Ronald Oussorenc1577902011-03-16 10:03:10 -0400545Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400546
547 .. versionadded:: 3.3
548 The :exc:`SubprocessError` base class was added.
549
Georg Brandl116aa622007-08-15 14:28:22 +0000550
551Security
552^^^^^^^^
553
Nick Coghlanc29248f2011-11-08 20:49:23 +1000554Unlike some other popen functions, this implementation will never call a
555system shell implicitly. This means that all characters, including shell
556metacharacters, can safely be passed to child processes. Obviously, if the
557shell is invoked explicitly, then it is the application's responsibility to
558ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl116aa622007-08-15 14:28:22 +0000559
560
561Popen Objects
562-------------
563
564Instances of the :class:`Popen` class have the following methods:
565
566
567.. method:: Popen.poll()
568
Christian Heimes7f044312008-01-06 17:05:40 +0000569 Check if child process has terminated. Set and return :attr:`returncode`
570 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000571
572
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400573.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000574
Christian Heimes7f044312008-01-06 17:05:40 +0000575 Wait for child process to terminate. Set and return :attr:`returncode`
576 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000577
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400578 If the process does not terminate after *timeout* seconds, raise a
579 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
580 retry the wait.
581
Georg Brandl734e2682008-08-12 08:18:18 +0000582 .. warning::
583
Philip Jenveyb0896842009-12-03 02:29:36 +0000584 This will deadlock when using ``stdout=PIPE`` and/or
585 ``stderr=PIPE`` and the child process generates enough output to
586 a pipe such that it blocks waiting for the OS pipe buffer to
587 accept more data. Use :meth:`communicate` to avoid that.
Georg Brandl734e2682008-08-12 08:18:18 +0000588
Reid Kleckner28f13032011-03-14 12:36:53 -0400589 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400590 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000591
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400592
593.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400596 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700597 *input* argument should be data to be sent to the child process, or
598 ``None``, if no data should be sent to the child. The type of *input*
599 must be bytes or, if *universal_newlines* was ``True``, a string.
Georg Brandl116aa622007-08-15 14:28:22 +0000600
Georg Brandlaf265f42008-12-07 15:06:20 +0000601 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000602
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000603 Note that if you want to send data to the process's stdin, you need to create
604 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
605 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
606 ``stderr=PIPE`` too.
607
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400608 If the process does not terminate after *timeout* seconds, a
609 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
610 retrying communication will not lose any output.
611
612 The child process is not killed if the timeout expires, so in order to
613 cleanup properly a well-behaved application should kill the child process and
614 finish communication::
615
616 proc = subprocess.Popen(...)
617 try:
618 outs, errs = proc.communicate(timeout=15)
619 except TimeoutExpired:
620 proc.kill()
621 outs, errs = proc.communicate()
622
Christian Heimes7f044312008-01-06 17:05:40 +0000623 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000624
Christian Heimes7f044312008-01-06 17:05:40 +0000625 The data read is buffered in memory, so do not use this method if the data
626 size is large or unlimited.
627
Reid Kleckner28f13032011-03-14 12:36:53 -0400628 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400629 *timeout* was added.
630
Georg Brandl116aa622007-08-15 14:28:22 +0000631
Christian Heimesa342c012008-04-20 21:01:16 +0000632.. method:: Popen.send_signal(signal)
633
634 Sends the signal *signal* to the child.
635
636 .. note::
637
Brian Curtineb24d742010-04-12 17:16:38 +0000638 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000639 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000640 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000641
Christian Heimesa342c012008-04-20 21:01:16 +0000642
643.. method:: Popen.terminate()
644
645 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000646 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000647 to stop the child.
648
Christian Heimesa342c012008-04-20 21:01:16 +0000649
650.. method:: Popen.kill()
651
652 Kills the child. On Posix OSs the function sends SIGKILL to the child.
653 On Windows :meth:`kill` is an alias for :meth:`terminate`.
654
Christian Heimesa342c012008-04-20 21:01:16 +0000655
Georg Brandl116aa622007-08-15 14:28:22 +0000656The following attributes are also available:
657
Georg Brandl734e2682008-08-12 08:18:18 +0000658.. warning::
659
Georg Brandle720c0a2009-04-27 16:20:50 +0000660 Use :meth:`communicate` rather than :attr:`.stdin.write <stdin>`,
661 :attr:`.stdout.read <stdout>` or :attr:`.stderr.read <stderr>` to avoid
662 deadlocks due to any of the other OS pipe buffers filling up and blocking the
663 child process.
Georg Brandl734e2682008-08-12 08:18:18 +0000664
665
Georg Brandl116aa622007-08-15 14:28:22 +0000666.. attribute:: Popen.stdin
667
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000668 If the *stdin* argument was :data:`PIPE`, this attribute is a :term:`file
669 object` that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000670
671
672.. attribute:: Popen.stdout
673
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000674 If the *stdout* argument was :data:`PIPE`, this attribute is a :term:`file
675 object` that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000676
677
678.. attribute:: Popen.stderr
679
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000680 If the *stderr* argument was :data:`PIPE`, this attribute is a :term:`file
681 object` that provides error output from the child process. Otherwise, it is
Georg Brandlaf265f42008-12-07 15:06:20 +0000682 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000683
684
685.. attribute:: Popen.pid
686
687 The process ID of the child process.
688
Georg Brandl58bfdca2010-03-21 09:50:49 +0000689 Note that if you set the *shell* argument to ``True``, this is the process ID
690 of the spawned shell.
691
Georg Brandl116aa622007-08-15 14:28:22 +0000692
693.. attribute:: Popen.returncode
694
Christian Heimes7f044312008-01-06 17:05:40 +0000695 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
696 by :meth:`communicate`). A ``None`` value indicates that the process
697 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000698
Christian Heimes7f044312008-01-06 17:05:40 +0000699 A negative value ``-N`` indicates that the child was terminated by signal
700 ``N`` (Unix only).
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702
Brian Curtine6242d72011-04-29 22:17:51 -0500703Windows Popen Helpers
704---------------------
705
706The :class:`STARTUPINFO` class and following constants are only available
707on Windows.
708
709.. class:: STARTUPINFO()
Brian Curtin73365dd2011-04-29 22:18:33 -0500710
Brian Curtine6242d72011-04-29 22:17:51 -0500711 Partial support of the Windows
712 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
713 structure is used for :class:`Popen` creation.
714
715 .. attribute:: dwFlags
716
Senthil Kumarana6bac952011-07-04 11:28:30 -0700717 A bit field that determines whether certain :class:`STARTUPINFO`
718 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500719
720 si = subprocess.STARTUPINFO()
721 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
722
723 .. attribute:: hStdInput
724
Senthil Kumarana6bac952011-07-04 11:28:30 -0700725 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
726 is the standard input handle for the process. If
727 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
728 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500729
730 .. attribute:: hStdOutput
731
Senthil Kumarana6bac952011-07-04 11:28:30 -0700732 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
733 is the standard output handle for the process. Otherwise, this attribute
734 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500735 buffer.
736
737 .. attribute:: hStdError
738
Senthil Kumarana6bac952011-07-04 11:28:30 -0700739 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
740 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500741 ignored and the default for standard error is the console window's buffer.
742
743 .. attribute:: wShowWindow
744
Senthil Kumarana6bac952011-07-04 11:28:30 -0700745 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500746 can be any of the values that can be specified in the ``nCmdShow``
747 parameter for the
748 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700749 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500750 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500751
Brian Curtine6242d72011-04-29 22:17:51 -0500752 :data:`SW_HIDE` is provided for this attribute. It is used when
753 :class:`Popen` is called with ``shell=True``.
754
755
756Constants
757^^^^^^^^^
758
759The :mod:`subprocess` module exposes the following constants.
760
761.. data:: STD_INPUT_HANDLE
762
763 The standard input device. Initially, this is the console input buffer,
764 ``CONIN$``.
765
766.. data:: STD_OUTPUT_HANDLE
767
768 The standard output device. Initially, this is the active console screen
769 buffer, ``CONOUT$``.
770
771.. data:: STD_ERROR_HANDLE
772
773 The standard error device. Initially, this is the active console screen
774 buffer, ``CONOUT$``.
775
776.. data:: SW_HIDE
777
778 Hides the window. Another window will be activated.
779
780.. data:: STARTF_USESTDHANDLES
781
782 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700783 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500784 contain additional information.
785
786.. data:: STARTF_USESHOWWINDOW
787
Senthil Kumarana6bac952011-07-04 11:28:30 -0700788 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500789 additional information.
790
791.. data:: CREATE_NEW_CONSOLE
792
793 The new process has a new console, instead of inheriting its parent's
794 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500795
Brian Curtine6242d72011-04-29 22:17:51 -0500796 This flag is always set when :class:`Popen` is created with ``shell=True``.
797
Brian Curtin30401932011-04-29 22:20:57 -0500798.. data:: CREATE_NEW_PROCESS_GROUP
799
800 A :class:`Popen` ``creationflags`` parameter to specify that a new process
801 group will be created. This flag is necessary for using :func:`os.kill`
802 on the subprocess.
803
804 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
805
Brian Curtine6242d72011-04-29 22:17:51 -0500806
Benjamin Petersondcf97b92008-07-02 17:30:14 +0000807.. _subprocess-replacements:
808
Georg Brandl116aa622007-08-15 14:28:22 +0000809Replacing Older Functions with the subprocess Module
810----------------------------------------------------
811
Nick Coghlanc29248f2011-11-08 20:49:23 +1000812In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +0000813
814.. note::
815
Nick Coghlanc29248f2011-11-08 20:49:23 +1000816 All "a" functions in this section fail (more or less) silently if the
817 executed program cannot be found; the "b" replacements raise :exc:`OSError`
818 instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000819
Nick Coghlanc29248f2011-11-08 20:49:23 +1000820 In addition, the replacements using :func:`check_output` will fail with a
821 :exc:`CalledProcessError` if the requested operation produces a non-zero
822 return code. The output is still available as the ``output`` attribute of
823 the raised exception.
824
825In the following examples, we assume that the relevant functions have already
826been imported from the subprocess module.
Georg Brandl116aa622007-08-15 14:28:22 +0000827
828
829Replacing /bin/sh shell backquote
830^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
831
832::
833
834 output=`mycmd myarg`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000835 # becomes
836 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +0000837
838
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000839Replacing shell pipeline
840^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000841
842::
843
844 output=`dmesg | grep hda`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000845 # becomes
Georg Brandl116aa622007-08-15 14:28:22 +0000846 p1 = Popen(["dmesg"], stdout=PIPE)
847 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000848 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +0000849 output = p2.communicate()[0]
850
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000851The p1.stdout.close() call after starting the p2 is important in order for p1
852to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +0000853
Nick Coghlanc29248f2011-11-08 20:49:23 +1000854Alternatively, for trusted input, the shell's own pipeline support may still
R David Murray28b8b942012-04-03 08:46:48 -0400855be used directly::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000856
857 output=`dmesg | grep hda`
858 # becomes
859 output=check_output("dmesg | grep hda", shell=True)
860
861
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000862Replacing :func:`os.system`
863^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000864
865::
866
867 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +1000868 # becomes
869 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000870
871Notes:
872
873* Calling the program through the shell is usually not required.
874
Georg Brandl116aa622007-08-15 14:28:22 +0000875A more realistic example would look like this::
876
877 try:
878 retcode = call("mycmd" + " myarg", shell=True)
879 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +0000880 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000881 else:
Collin Winterc79461b2007-09-01 23:34:30 +0000882 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000883 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +0000884 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000885
886
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000887Replacing the :func:`os.spawn <os.spawnl>` family
888^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000889
890P_NOWAIT example::
891
892 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
893 ==>
894 pid = Popen(["/bin/mycmd", "myarg"]).pid
895
896P_WAIT example::
897
898 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
899 ==>
900 retcode = call(["/bin/mycmd", "myarg"])
901
902Vector example::
903
904 os.spawnvp(os.P_NOWAIT, path, args)
905 ==>
906 Popen([path] + args[1:])
907
908Environment example::
909
910 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
911 ==>
912 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
913
914
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000915
916Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
917^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000918
919::
920
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000921 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000922 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000923 p = Popen(cmd, shell=True, bufsize=bufsize,
924 stdin=PIPE, stdout=PIPE, close_fds=True)
925 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +0000926
927::
928
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000929 (child_stdin,
930 child_stdout,
931 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000932 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000933 p = Popen(cmd, shell=True, bufsize=bufsize,
934 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
935 (child_stdin,
936 child_stdout,
937 child_stderr) = (p.stdin, p.stdout, p.stderr)
938
939::
940
941 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
942 ==>
943 p = Popen(cmd, shell=True, bufsize=bufsize,
944 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
945 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
946
947Return code handling translates as follows::
948
949 pipe = os.popen(cmd, 'w')
950 ...
951 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +0000952 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000953 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000954 ==>
955 process = Popen(cmd, 'w', stdin=PIPE)
956 ...
957 process.stdin.close()
958 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000959 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000960
961
962Replacing functions from the :mod:`popen2` module
963^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
964
965.. note::
966
967 If the cmd argument to popen2 functions is a string, the command is executed
968 through /bin/sh. If it is a list, the command is directly executed.
969
970::
971
972 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
973 ==>
974 p = Popen(["somestring"], shell=True, bufsize=bufsize,
975 stdin=PIPE, stdout=PIPE, close_fds=True)
976 (child_stdout, child_stdin) = (p.stdout, p.stdin)
977
978::
979
980 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
981 ==>
982 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
983 stdin=PIPE, stdout=PIPE, close_fds=True)
984 (child_stdout, child_stdin) = (p.stdout, p.stdin)
985
986:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
987:class:`subprocess.Popen`, except that:
988
989* :class:`Popen` raises an exception if the execution fails.
990
991* the *capturestderr* argument is replaced with the *stderr* argument.
992
993* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
994
995* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +0000996 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
997 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +0300998
Nick Coghlanc29248f2011-11-08 20:49:23 +1000999
Nick Coghlanc29248f2011-11-08 20:49:23 +10001000Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001001---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001002
1003This module also provides the following legacy functions from the 2.x
1004``commands`` module. These operations implicitly invoke the system shell and
1005none of the guarantees described above regarding security and exception
1006handling consistency are valid for these functions.
1007
1008.. function:: getstatusoutput(cmd)
1009
1010 Return ``(status, output)`` of executing *cmd* in a shell.
1011
1012 Execute the string *cmd* in a shell with :func:`os.popen` and return a 2-tuple
1013 ``(status, output)``. *cmd* is actually run as ``{ cmd ; } 2>&1``, so that the
1014 returned output will contain output or error messages. A trailing newline is
1015 stripped from the output. The exit status for the command can be interpreted
1016 according to the rules for the C function :c:func:`wait`. Example::
1017
1018 >>> subprocess.getstatusoutput('ls /bin/ls')
1019 (0, '/bin/ls')
1020 >>> subprocess.getstatusoutput('cat /bin/junk')
1021 (256, 'cat: /bin/junk: No such file or directory')
1022 >>> subprocess.getstatusoutput('/bin/junk')
1023 (256, 'sh: /bin/junk: not found')
1024
1025 Availability: UNIX.
1026
1027
1028.. function:: getoutput(cmd)
1029
1030 Return output (stdout and stderr) of executing *cmd* in a shell.
1031
1032 Like :func:`getstatusoutput`, except the exit status is ignored and the return
1033 value is a string containing the command's output. Example::
1034
1035 >>> subprocess.getoutput('ls /bin/ls')
1036 '/bin/ls'
1037
1038 Availability: UNIX.
1039
Nick Coghlan32e4a582011-11-08 21:50:58 +10001040
Eli Bendersky046a7642011-04-15 07:23:26 +03001041Notes
1042-----
1043
1044.. _converting-argument-sequence:
1045
1046Converting an argument sequence to a string on Windows
1047^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1048
1049On Windows, an *args* sequence is converted to a string that can be parsed
1050using the following rules (which correspond to the rules used by the MS C
1051runtime):
1052
10531. Arguments are delimited by white space, which is either a
1054 space or a tab.
1055
10562. A string surrounded by double quotation marks is
1057 interpreted as a single argument, regardless of white space
1058 contained within. A quoted string can be embedded in an
1059 argument.
1060
10613. A double quotation mark preceded by a backslash is
1062 interpreted as a literal double quotation mark.
1063
10644. Backslashes are interpreted literally, unless they
1065 immediately precede a double quotation mark.
1066
10675. If backslashes immediately precede a double quotation mark,
1068 every pair of backslashes is interpreted as a literal
1069 backslash. If the number of backslashes is odd, the last
1070 backslash escapes the next double quotation mark as
1071 described in rule 3.
1072
Eli Benderskyd2112312011-04-15 07:26:28 +03001073
Éric Araujo9bce3112011-07-27 18:29:31 +02001074.. seealso::
1075
1076 :mod:`shlex`
1077 Module which provides function to parse and escape command lines.