blob: cf9fd0b6830153e1d171e2e62828591dcb10f445 [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
Ezio Melotti402f75d2012-11-08 10:07:10 +020025Using the :mod:`subprocess` Module
26----------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +000027
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
Gregory P. Smithf16455a2013-03-19 23:36:31 -0700121 Run command with arguments and return its output.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000122
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
Andrew Svetlov50be4522012-08-13 22:09:04 +0300159 ``True`` as described below in :ref:`frequently-used-arguments`.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000160
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
Georg Brandl44ea77b2013-03-28 13:28:44 +0100172 ..
173
Nick Coghlanc29248f2011-11-08 20:49:23 +1000174 .. warning::
175
176 Invoking the system shell with ``shell=True`` can be a security hazard
177 if combined with untrusted input. See the warning under
178 :ref:`frequently-used-arguments` for details.
179
180 .. note::
181
182 Do not use ``stderr=PIPE`` with this function. As the pipe is not being
183 read in the current process, the child process may block if it
184 generates enough output to the pipe to fill up the OS pipe buffer.
185
Nick Coghlan217f05b2011-11-08 22:11:21 +1000186 .. versionchanged:: 3.3
187 *timeout* was added.
188
189
190.. data:: DEVNULL
191
192 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
193 to :class:`Popen` and indicates that the special file :data:`os.devnull`
194 will be used.
195
196 .. versionadded:: 3.3
197
Nick Coghlanc29248f2011-11-08 20:49:23 +1000198
199.. data:: PIPE
200
201 Special value that can be used as the *stdin*, *stdout* or *stderr* argument
202 to :class:`Popen` and indicates that a pipe to the standard stream should be
203 opened.
204
205
206.. data:: STDOUT
207
208 Special value that can be used as the *stderr* argument to :class:`Popen` and
209 indicates that standard error should go into the same handle as standard
210 output.
211
212
Andrew Svetlovb4a09ab2012-08-09 15:11:45 +0300213.. exception:: SubprocessError
214
215 Base class for all other exceptions from this module.
216
217 .. versionadded:: 3.3
218
219
220.. exception:: TimeoutExpired
221
222 Subclass of :exc:`SubprocessError`, raised when a timeout expires
223 while waiting for a child process.
224
225 .. attribute:: cmd
226
227 Command that was used to spawn the child process.
228
229 .. attribute:: timeout
230
231 Timeout in seconds.
232
233 .. attribute:: output
234
235 Output of the child process if this exception is raised by
236 :func:`check_output`. Otherwise, ``None``.
237
238 .. versionadded:: 3.3
239
240
241.. exception:: CalledProcessError
242
243 Subclass of :exc:`SubprocessError`, raised when a process run by
244 :func:`check_call` or :func:`check_output` returns a non-zero exit status.
245
246 .. attribute:: returncode
247
248 Exit status of the child process.
249
250 .. attribute:: cmd
251
252 Command that was used to spawn the child process.
253
254 .. attribute:: output
255
256 Output of the child process if this exception is raised by
257 :func:`check_output`. Otherwise, ``None``.
258
259
260
Nick Coghlanc29248f2011-11-08 20:49:23 +1000261.. _frequently-used-arguments:
262
263Frequently Used Arguments
264^^^^^^^^^^^^^^^^^^^^^^^^^
265
266To support a wide variety of use cases, the :class:`Popen` constructor (and
267the convenience functions) accept a large number of optional arguments. For
268most typical use cases, many of these arguments can be safely left at their
269default values. The arguments that are most commonly needed are:
270
271 *args* is required for all calls and should be a string, or a sequence of
272 program arguments. Providing a sequence of arguments is generally
273 preferred, as it allows the module to take care of any required escaping
274 and quoting of arguments (e.g. to permit spaces in file names). If passing
275 a single string, either *shell* must be :const:`True` (see below) or else
276 the string must simply name the program to be executed without specifying
277 any arguments.
278
279 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
280 standard output and standard error file handles, respectively. Valid values
Nick Coghlan217f05b2011-11-08 22:11:21 +1000281 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
282 integer), an existing file object, and ``None``. :data:`PIPE` indicates
283 that a new pipe to the child should be created. :data:`DEVNULL` indicates
284 that the special file :data:`os.devnull` will be used. With the default
285 settings of ``None``, no redirection will occur; the child's file handles
286 will be inherited from the parent. Additionally, *stderr* can be
287 :data:`STDOUT`, which indicates that the stderr data from the child
288 process should be captured into the same file handle as for *stdout*.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000289
R David Murray1b00f252012-08-15 10:43:58 -0400290 .. index::
291 single: universal newlines; subprocess module
292
R David Murray0689ce42012-08-15 11:13:31 -0400293 If *universal_newlines* is ``True``, the file objects *stdin*, *stdout* and
294 *stderr* will be opened as text streams in :term:`universal newlines` mode
295 using the encoding returned by :func:`locale.getpreferredencoding(False)
Ronald Oussorena6865052013-07-06 10:23:59 +0200296 <locale.getpreferredencoding>`, otherwise these streams will be opened
297 as binary streams. For *stdin*, line ending characters
R David Murray0689ce42012-08-15 11:13:31 -0400298 ``'\n'`` in the input will be converted to the default line separator
299 :data:`os.linesep`. For *stdout* and *stderr*, all line endings in the
300 output will be converted to ``'\n'``. For more information see the
301 documentation of the :class:`io.TextIOWrapper` class when the *newline*
302 argument to its constructor is ``None``.
Nick Coghlanc29248f2011-11-08 20:49:23 +1000303
Andrew Svetlov50be4522012-08-13 22:09:04 +0300304 .. note::
305
Gregory P. Smith1f8a40b2013-03-20 18:32:03 -0700306 The newlines attribute of the file objects :attr:`Popen.stdin`,
307 :attr:`Popen.stdout` and :attr:`Popen.stderr` are not updated by
308 the :meth:`Popen.communicate` method.
Andrew Svetlov50be4522012-08-13 22:09:04 +0300309
310 If *shell* is ``True``, the specified command will be executed through
Ezio Melotti186d5232012-09-15 08:34:08 +0300311 the shell. This can be useful if you are using Python primarily for the
Nick Coghlanc29248f2011-11-08 20:49:23 +1000312 enhanced control flow it offers over most system shells and still want
Ezio Melotti186d5232012-09-15 08:34:08 +0300313 convenient access to other shell features such as shell pipes, filename
314 wildcards, environment variable expansion, and expansion of ``~`` to a
315 user's home directory. However, note that Python itself offers
316 implementations of many shell-like features (in particular, :mod:`glob`,
317 :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
318 :func:`os.path.expanduser`, and :mod:`shutil`).
Nick Coghlanc29248f2011-11-08 20:49:23 +1000319
Andrew Svetlov4805fa82012-08-13 22:11:14 +0300320 .. versionchanged:: 3.3
321 When *universal_newlines* is ``True``, the class uses the encoding
322 :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
323 instead of ``locale.getpreferredencoding()``. See the
324 :class:`io.TextIOWrapper` class for more information on this change.
325
Nick Coghlanc29248f2011-11-08 20:49:23 +1000326 .. warning::
327
328 Executing shell commands that incorporate unsanitized input from an
329 untrusted source makes a program vulnerable to `shell injection
330 <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
331 a serious security flaw which can result in arbitrary command execution.
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700332 For this reason, the use of ``shell=True`` is **strongly discouraged**
333 in cases where the command string is constructed from external input::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000334
335 >>> from subprocess import call
336 >>> filename = input("What file would you like to display?\n")
337 What file would you like to display?
338 non_existent; rm -rf / #
339 >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
340
341 ``shell=False`` disables all shell based features, but does not suffer
342 from this vulnerability; see the Note in the :class:`Popen` constructor
343 documentation for helpful hints in getting ``shell=False`` to work.
344
Andrew Svetlovc2415eb2012-10-28 11:42:26 +0200345 When using ``shell=True``, :func:`shlex.quote` can be used to properly
346 escape whitespace and shell metacharacters in strings that are going to
347 be used to construct shell commands.
348
Nick Coghlanc29248f2011-11-08 20:49:23 +1000349These options, along with all of the other options, are described in more
350detail in the :class:`Popen` constructor documentation.
351
352
Sandro Tosi1526ad12011-12-25 11:27:37 +0100353Popen Constructor
Sandro Tosi3e6c8142011-12-25 17:14:11 +0100354^^^^^^^^^^^^^^^^^
Nick Coghlanc29248f2011-11-08 20:49:23 +1000355
356The underlying process creation and management in this module is handled by
357the :class:`Popen` class. It offers a lot of flexibility so that developers
358are able to handle the less common cases not covered by the convenience
359functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000360
361
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700362.. class:: Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, \
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700363 stderr=None, preexec_fn=None, close_fds=True, shell=False, \
364 cwd=None, env=None, universal_newlines=False, \
365 startupinfo=None, creationflags=0, restore_signals=True, \
366 start_new_session=False, pass_fds=())
Georg Brandl116aa622007-08-15 14:28:22 +0000367
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700368 Execute a child program in a new process. On Unix, the class uses
369 :meth:`os.execvp`-like behavior to execute the child program. On Windows,
370 the class uses the Windows ``CreateProcess()`` function. The arguments to
371 :class:`Popen` are as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000372
Chris Jerdonek470ee392012-10-08 23:06:57 -0700373 *args* should be a sequence of program arguments or else a single string.
374 By default, the program to execute is the first item in *args* if *args* is
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700375 a sequence. If *args* is a string, the interpretation is
376 platform-dependent and described below. See the *shell* and *executable*
377 arguments for additional differences from the default behavior. Unless
378 otherwise stated, it is recommended to pass *args* as a sequence.
Georg Brandl116aa622007-08-15 14:28:22 +0000379
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700380 On Unix, if *args* is a string, the string is interpreted as the name or
381 path of the program to execute. However, this can only be done if not
382 passing arguments to the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000383
R. David Murray5973e4d2010-02-04 16:41:57 +0000384 .. note::
385
386 :meth:`shlex.split` can be useful when determining the correct
387 tokenization for *args*, especially in complex cases::
388
389 >>> import shlex, subprocess
R. David Murray73bc75b2010-02-05 16:25:12 +0000390 >>> command_line = input()
R. David Murray5973e4d2010-02-04 16:41:57 +0000391 /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
392 >>> args = shlex.split(command_line)
393 >>> print(args)
394 ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
395 >>> p = subprocess.Popen(args) # Success!
396
397 Note in particular that options (such as *-input*) and arguments (such
398 as *eggs.txt*) that are separated by whitespace in the shell go in separate
399 list elements, while arguments that need quoting or backslash escaping when
400 used in the shell (such as filenames containing spaces or the *echo* command
401 shown above) are single list elements.
402
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700403 On Windows, if *args* is a sequence, it will be converted to a string in a
404 manner described in :ref:`converting-argument-sequence`. This is because
405 the underlying ``CreateProcess()`` operates on strings.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700406
407 The *shell* argument (which defaults to *False*) specifies whether to use
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700408 the shell as the program to execute. If *shell* is *True*, it is
409 recommended to pass *args* as a string rather than as a sequence.
Chris Jerdonek470ee392012-10-08 23:06:57 -0700410
411 On Unix with ``shell=True``, the shell defaults to :file:`/bin/sh`. If
412 *args* is a string, the string specifies the command
413 to execute through the shell. This means that the string must be
R. David Murray5973e4d2010-02-04 16:41:57 +0000414 formatted exactly as it would be when typed at the shell prompt. This
415 includes, for example, quoting or backslash escaping filenames with spaces in
416 them. If *args* is a sequence, the first item specifies the command string, and
417 any additional items will be treated as additional arguments to the shell
Chris Jerdonek470ee392012-10-08 23:06:57 -0700418 itself. That is to say, :class:`Popen` does the equivalent of::
R. David Murray5973e4d2010-02-04 16:41:57 +0000419
420 Popen(['/bin/sh', '-c', args[0], args[1], ...])
Georg Brandl116aa622007-08-15 14:28:22 +0000421
Chris Jerdonek470ee392012-10-08 23:06:57 -0700422 On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
423 specifies the default shell. The only time you need to specify
424 ``shell=True`` on Windows is when the command you wish to execute is built
425 into the shell (e.g. :command:`dir` or :command:`copy`). You do not need
426 ``shell=True`` to run a batch file or console-based executable.
Georg Brandl116aa622007-08-15 14:28:22 +0000427
Chris Jerdonekcc32a682012-10-10 22:52:22 -0700428 .. warning::
429
430 Passing ``shell=True`` can be a security hazard if combined with
431 untrusted input. See the warning under :ref:`frequently-used-arguments`
432 for details.
433
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700434 *bufsize* will be supplied as the corresponding argument to the :meth:`io.open`
435 function when creating the stdin/stdout/stderr pipe file objects:
436 :const:`0` means unbuffered (read and write are one system call and can return short),
437 :const:`1` means line buffered, any other positive value means use a buffer of
438 approximately that size. A negative bufsize (the default) means
439 the system default of io.DEFAULT_BUFFER_SIZE will be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000440
Gregory P. Smitha1b9ed32013-03-23 11:54:22 -0700441 .. versionchanged:: 3.2.4, 3.3.1
Antoine Pitrou4b876202010-06-02 17:10:49 +0000442
Gregory P. Smitha1ed5392013-03-23 11:44:25 -0700443 *bufsize* now defaults to -1 to enable buffering by default to match the
Gregory P. Smitha1b9ed32013-03-23 11:54:22 -0700444 behavior that most code expects. In 3.2.0 through 3.2.3 and 3.3.0 it
445 incorrectly defaulted to :const:`0` which was unbuffered and allowed
446 short reads. This was unintentional and did not match the behavior of
447 Python 2 as most code expected.
Antoine Pitrou4b876202010-06-02 17:10:49 +0000448
Chris Jerdonek470ee392012-10-08 23:06:57 -0700449 The *executable* argument specifies a replacement program to execute. It
450 is very seldom needed. When ``shell=False``, *executable* replaces the
Chris Jerdonek4a4a02b2012-10-10 17:46:18 -0700451 program to execute specified by *args*. However, the original *args* is
452 still passed to the program. Most programs treat the program specified
453 by *args* as the command name, which can then be different from the program
454 actually executed. On Unix, the *args* name
Chris Jerdonek470ee392012-10-08 23:06:57 -0700455 becomes the display name for the executable in utilities such as
456 :program:`ps`. If ``shell=True``, on Unix the *executable* argument
457 specifies a replacement shell for the default :file:`/bin/sh`.
Georg Brandl116aa622007-08-15 14:28:22 +0000458
Nick Coghlanc29248f2011-11-08 20:49:23 +1000459 *stdin*, *stdout* and *stderr* specify the executed program's standard input,
Georg Brandlaf265f42008-12-07 15:06:20 +0000460 standard output and standard error file handles, respectively. Valid values
Ross Lagerwallba102ec2011-03-16 18:40:25 +0200461 are :data:`PIPE`, :data:`DEVNULL`, an existing file descriptor (a positive
462 integer), an existing :term:`file object`, and ``None``. :data:`PIPE`
463 indicates that a new pipe to the child should be created. :data:`DEVNULL`
Nick Coghlan217f05b2011-11-08 22:11:21 +1000464 indicates that the special file :data:`os.devnull` will be used. With the
465 default settings of ``None``, no redirection will occur; the child's file
466 handles will be inherited from the parent. Additionally, *stderr* can be
467 :data:`STDOUT`, which indicates that the stderr data from the applications
468 should be captured into the same file handle as for stdout.
Georg Brandl116aa622007-08-15 14:28:22 +0000469
470 If *preexec_fn* is set to a callable object, this object will be called in the
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000471 child process just before the child is executed.
472 (Unix only)
473
474 .. warning::
475
476 The *preexec_fn* parameter is not safe to use in the presence of threads
477 in your application. The child process could deadlock before exec is
478 called.
479 If you must use it, keep it trivial! Minimize the number of libraries
480 you call into.
481
482 .. note::
483
484 If you need to modify the environment for the child use the *env*
485 parameter rather than doing it in a *preexec_fn*.
486 The *start_new_session* parameter can take the place of a previously
487 common use of *preexec_fn* to call os.setsid() in the child.
Georg Brandl116aa622007-08-15 14:28:22 +0000488
489 If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
490 :const:`2` will be closed before the child process is executed. (Unix only).
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000491 The default varies by platform: Always true on Unix. On Windows it is
492 true when *stdin*/*stdout*/*stderr* are :const:`None`, false otherwise.
Gregory P. Smithd23047b2010-12-04 09:10:44 +0000493 On Windows, if *close_fds* is true then no handles will be inherited by the
Georg Brandl116aa622007-08-15 14:28:22 +0000494 child process. Note that on Windows, you cannot set *close_fds* to true and
495 also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
496
Gregory P. Smith8edd99d2010-12-14 13:43:30 +0000497 .. versionchanged:: 3.2
498 The default for *close_fds* was changed from :const:`False` to
499 what is described above.
500
501 *pass_fds* is an optional sequence of file descriptors to keep open
502 between the parent and child. Providing any *pass_fds* forces
503 *close_fds* to be :const:`True`. (Unix only)
504
505 .. versionadded:: 3.2
506 The *pass_fds* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000507
Chris Jerdonekec3ea942012-09-30 00:10:28 -0700508 If *cwd* is not ``None``, the function changes the working directory to
509 *cwd* before executing the child. In particular, the function looks for
510 *executable* (or for the first item in *args*) relative to *cwd* if the
511 executable path is a relative path.
Georg Brandl116aa622007-08-15 14:28:22 +0000512
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000513 If *restore_signals* is True (the default) all signals that Python has set to
514 SIG_IGN are restored to SIG_DFL in the child process before the exec.
515 Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
516 (Unix only)
517
518 .. versionchanged:: 3.2
519 *restore_signals* was added.
520
521 If *start_new_session* is True the setsid() system call will be made in the
522 child process prior to the execution of the subprocess. (Unix only)
523
524 .. versionchanged:: 3.2
525 *start_new_session* was added.
526
Christian Heimesa342c012008-04-20 21:01:16 +0000527 If *env* is not ``None``, it must be a mapping that defines the environment
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +0000528 variables for the new process; these are used instead of the default
529 behavior of inheriting the current process' environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000530
R. David Murray1055e892009-04-16 18:15:32 +0000531 .. note::
R. David Murrayf4ac1492009-04-15 22:35:15 +0000532
Georg Brandl2708f3a2009-12-20 14:38:23 +0000533 If specified, *env* must provide any variables required for the program to
534 execute. On Windows, in order to run a `side-by-side assembly`_ the
535 specified *env* **must** include a valid :envvar:`SystemRoot`.
R. David Murrayf4ac1492009-04-15 22:35:15 +0000536
R. David Murray1055e892009-04-16 18:15:32 +0000537 .. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
538
Andrew Svetlov50be4522012-08-13 22:09:04 +0300539 If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
R David Murray1b00f252012-08-15 10:43:58 -0400540 and *stderr* are opened as text streams in universal newlines mode, as
Ronald Oussorena6865052013-07-06 10:23:59 +0200541 described above in :ref:`frequently-used-arguments`, otherwise they are
542 opened as binary streams.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Brian Curtine6242d72011-04-29 22:17:51 -0500544 If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
545 passed to the underlying ``CreateProcess`` function.
Brian Curtin30401932011-04-29 22:20:57 -0500546 *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
547 :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
Georg Brandl116aa622007-08-15 14:28:22 +0000548
Gregory P. Smith6b657452011-05-11 21:42:08 -0700549 Popen objects are supported as context managers via the :keyword:`with` statement:
550 on exit, standard file descriptors are closed, and the process is waited for.
Brian Curtin79cdb662010-12-03 02:46:02 +0000551 ::
552
553 with Popen(["ifconfig"], stdout=PIPE) as proc:
554 log.write(proc.stdout.read())
555
556 .. versionchanged:: 3.2
557 Added context manager support.
558
Georg Brandl116aa622007-08-15 14:28:22 +0000559
Georg Brandl116aa622007-08-15 14:28:22 +0000560Exceptions
561^^^^^^^^^^
562
563Exceptions raised in the child process, before the new program has started to
564execute, will be re-raised in the parent. Additionally, the exception object
565will have one extra attribute called :attr:`child_traceback`, which is a string
Georg Brandl81675612010-08-26 14:30:56 +0000566containing traceback information from the child's point of view.
Georg Brandl116aa622007-08-15 14:28:22 +0000567
568The most common exception raised is :exc:`OSError`. This occurs, for example,
569when trying to execute a non-existent file. Applications should prepare for
570:exc:`OSError` exceptions.
571
572A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
573arguments.
574
Nick Coghlanc29248f2011-11-08 20:49:23 +1000575:func:`check_call` and :func:`check_output` will raise
576:exc:`CalledProcessError` if the called process returns a non-zero return
577code.
Georg Brandl116aa622007-08-15 14:28:22 +0000578
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400579All of the functions and methods that accept a *timeout* parameter, such as
580:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
581the timeout expires before the process exits.
582
Ronald Oussorenc1577902011-03-16 10:03:10 -0400583Exceptions defined in this module all inherit from :exc:`SubprocessError`.
Gregory P. Smith54d412e2011-03-14 14:08:43 -0400584
585 .. versionadded:: 3.3
586 The :exc:`SubprocessError` base class was added.
587
Georg Brandl116aa622007-08-15 14:28:22 +0000588
589Security
590^^^^^^^^
591
Nick Coghlanc29248f2011-11-08 20:49:23 +1000592Unlike some other popen functions, this implementation will never call a
593system shell implicitly. This means that all characters, including shell
594metacharacters, can safely be passed to child processes. Obviously, if the
595shell is invoked explicitly, then it is the application's responsibility to
596ensure that all whitespace and metacharacters are quoted appropriately.
Georg Brandl116aa622007-08-15 14:28:22 +0000597
598
599Popen Objects
600-------------
601
602Instances of the :class:`Popen` class have the following methods:
603
604
605.. method:: Popen.poll()
606
Christian Heimes7f044312008-01-06 17:05:40 +0000607 Check if child process has terminated. Set and return :attr:`returncode`
608 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000609
610
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400611.. method:: Popen.wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000612
Christian Heimes7f044312008-01-06 17:05:40 +0000613 Wait for child process to terminate. Set and return :attr:`returncode`
614 attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000615
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400616 If the process does not terminate after *timeout* seconds, raise a
617 :exc:`TimeoutExpired` exception. It is safe to catch this exception and
618 retry the wait.
619
Georg Brandl734e2682008-08-12 08:18:18 +0000620 .. warning::
621
Philip Jenveyb0896842009-12-03 02:29:36 +0000622 This will deadlock when using ``stdout=PIPE`` and/or
623 ``stderr=PIPE`` and the child process generates enough output to
624 a pipe such that it blocks waiting for the OS pipe buffer to
625 accept more data. Use :meth:`communicate` to avoid that.
Georg Brandl734e2682008-08-12 08:18:18 +0000626
Reid Kleckner28f13032011-03-14 12:36:53 -0400627 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400628 *timeout* was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000629
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400630
631.. method:: Popen.communicate(input=None, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000632
633 Interact with process: Send data to stdin. Read data from stdout and stderr,
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400634 until end-of-file is reached. Wait for process to terminate. The optional
Gregory P. Smitha454ef62011-05-22 22:29:49 -0700635 *input* argument should be data to be sent to the child process, or
636 ``None``, if no data should be sent to the child. The type of *input*
637 must be bytes or, if *universal_newlines* was ``True``, a string.
Georg Brandl116aa622007-08-15 14:28:22 +0000638
Georg Brandlaf265f42008-12-07 15:06:20 +0000639 :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000640
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +0000641 Note that if you want to send data to the process's stdin, you need to create
642 the Popen object with ``stdin=PIPE``. Similarly, to get anything other than
643 ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
644 ``stderr=PIPE`` too.
645
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400646 If the process does not terminate after *timeout* seconds, a
647 :exc:`TimeoutExpired` exception will be raised. Catching this exception and
648 retrying communication will not lose any output.
649
650 The child process is not killed if the timeout expires, so in order to
651 cleanup properly a well-behaved application should kill the child process and
652 finish communication::
653
654 proc = subprocess.Popen(...)
655 try:
656 outs, errs = proc.communicate(timeout=15)
657 except TimeoutExpired:
658 proc.kill()
659 outs, errs = proc.communicate()
660
Christian Heimes7f044312008-01-06 17:05:40 +0000661 .. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000662
Christian Heimes7f044312008-01-06 17:05:40 +0000663 The data read is buffered in memory, so do not use this method if the data
664 size is large or unlimited.
665
Reid Kleckner28f13032011-03-14 12:36:53 -0400666 .. versionchanged:: 3.3
Reid Kleckner31aa7dd2011-03-14 12:02:10 -0400667 *timeout* was added.
668
Georg Brandl116aa622007-08-15 14:28:22 +0000669
Christian Heimesa342c012008-04-20 21:01:16 +0000670.. method:: Popen.send_signal(signal)
671
672 Sends the signal *signal* to the child.
673
674 .. note::
675
Brian Curtineb24d742010-04-12 17:16:38 +0000676 On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
Senthil Kumaran916bd382010-10-15 12:55:19 +0000677 CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
Brian Curtineb24d742010-04-12 17:16:38 +0000678 parameter which includes `CREATE_NEW_PROCESS_GROUP`.
Christian Heimesa342c012008-04-20 21:01:16 +0000679
Christian Heimesa342c012008-04-20 21:01:16 +0000680
681.. method:: Popen.terminate()
682
683 Stop the child. On Posix OSs the method sends SIGTERM to the
Georg Brandl60203b42010-10-06 10:11:56 +0000684 child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
Christian Heimesa342c012008-04-20 21:01:16 +0000685 to stop the child.
686
Christian Heimesa342c012008-04-20 21:01:16 +0000687
688.. method:: Popen.kill()
689
690 Kills the child. On Posix OSs the function sends SIGKILL to the child.
691 On Windows :meth:`kill` is an alias for :meth:`terminate`.
692
Christian Heimesa342c012008-04-20 21:01:16 +0000693
Georg Brandl116aa622007-08-15 14:28:22 +0000694The following attributes are also available:
695
Georg Brandl734e2682008-08-12 08:18:18 +0000696.. warning::
697
Ezio Melottiaa935df2012-08-27 10:00:05 +0300698 Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
699 :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
Georg Brandle720c0a2009-04-27 16:20:50 +0000700 deadlocks due to any of the other OS pipe buffers filling up and blocking the
701 child process.
Georg Brandl734e2682008-08-12 08:18:18 +0000702
703
Georg Brandl116aa622007-08-15 14:28:22 +0000704.. attribute:: Popen.stdin
705
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000706 If the *stdin* argument was :data:`PIPE`, this attribute is a :term:`file
707 object` that provides input to the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000708
709
710.. attribute:: Popen.stdout
711
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000712 If the *stdout* argument was :data:`PIPE`, this attribute is a :term:`file
713 object` that provides output from the child process. Otherwise, it is ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000714
715
716.. attribute:: Popen.stderr
717
Antoine Pitrou11cb9612010-09-15 11:11:28 +0000718 If the *stderr* argument was :data:`PIPE`, this attribute is a :term:`file
719 object` that provides error output from the child process. Otherwise, it is
Georg Brandlaf265f42008-12-07 15:06:20 +0000720 ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000721
722
723.. attribute:: Popen.pid
724
725 The process ID of the child process.
726
Georg Brandl58bfdca2010-03-21 09:50:49 +0000727 Note that if you set the *shell* argument to ``True``, this is the process ID
728 of the spawned shell.
729
Georg Brandl116aa622007-08-15 14:28:22 +0000730
731.. attribute:: Popen.returncode
732
Christian Heimes7f044312008-01-06 17:05:40 +0000733 The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
734 by :meth:`communicate`). A ``None`` value indicates that the process
735 hasn't terminated yet.
Georg Brandl48310cd2009-01-03 21:18:54 +0000736
Christian Heimes7f044312008-01-06 17:05:40 +0000737 A negative value ``-N`` indicates that the child was terminated by signal
738 ``N`` (Unix only).
Georg Brandl116aa622007-08-15 14:28:22 +0000739
740
Brian Curtine6242d72011-04-29 22:17:51 -0500741Windows Popen Helpers
742---------------------
743
744The :class:`STARTUPINFO` class and following constants are only available
745on Windows.
746
747.. class:: STARTUPINFO()
Brian Curtin73365dd2011-04-29 22:18:33 -0500748
Brian Curtine6242d72011-04-29 22:17:51 -0500749 Partial support of the Windows
750 `STARTUPINFO <http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
751 structure is used for :class:`Popen` creation.
752
753 .. attribute:: dwFlags
754
Senthil Kumarana6bac952011-07-04 11:28:30 -0700755 A bit field that determines whether certain :class:`STARTUPINFO`
756 attributes are used when the process creates a window. ::
Brian Curtine6242d72011-04-29 22:17:51 -0500757
758 si = subprocess.STARTUPINFO()
759 si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
760
761 .. attribute:: hStdInput
762
Senthil Kumarana6bac952011-07-04 11:28:30 -0700763 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
764 is the standard input handle for the process. If
765 :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
766 input is the keyboard buffer.
Brian Curtine6242d72011-04-29 22:17:51 -0500767
768 .. attribute:: hStdOutput
769
Senthil Kumarana6bac952011-07-04 11:28:30 -0700770 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
771 is the standard output handle for the process. Otherwise, this attribute
772 is ignored and the default for standard output is the console window's
Brian Curtine6242d72011-04-29 22:17:51 -0500773 buffer.
774
775 .. attribute:: hStdError
776
Senthil Kumarana6bac952011-07-04 11:28:30 -0700777 If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
778 is the standard error handle for the process. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500779 ignored and the default for standard error is the console window's buffer.
780
781 .. attribute:: wShowWindow
782
Senthil Kumarana6bac952011-07-04 11:28:30 -0700783 If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
Brian Curtine6242d72011-04-29 22:17:51 -0500784 can be any of the values that can be specified in the ``nCmdShow``
785 parameter for the
786 `ShowWindow <http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
Senthil Kumarana6bac952011-07-04 11:28:30 -0700787 function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
Brian Curtine6242d72011-04-29 22:17:51 -0500788 ignored.
Brian Curtin73365dd2011-04-29 22:18:33 -0500789
Brian Curtine6242d72011-04-29 22:17:51 -0500790 :data:`SW_HIDE` is provided for this attribute. It is used when
791 :class:`Popen` is called with ``shell=True``.
792
793
794Constants
795^^^^^^^^^
796
797The :mod:`subprocess` module exposes the following constants.
798
799.. data:: STD_INPUT_HANDLE
800
801 The standard input device. Initially, this is the console input buffer,
802 ``CONIN$``.
803
804.. data:: STD_OUTPUT_HANDLE
805
806 The standard output device. Initially, this is the active console screen
807 buffer, ``CONOUT$``.
808
809.. data:: STD_ERROR_HANDLE
810
811 The standard error device. Initially, this is the active console screen
812 buffer, ``CONOUT$``.
813
814.. data:: SW_HIDE
815
816 Hides the window. Another window will be activated.
817
818.. data:: STARTF_USESTDHANDLES
819
820 Specifies that the :attr:`STARTUPINFO.hStdInput`,
Senthil Kumarana6bac952011-07-04 11:28:30 -0700821 :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
Brian Curtine6242d72011-04-29 22:17:51 -0500822 contain additional information.
823
824.. data:: STARTF_USESHOWWINDOW
825
Senthil Kumarana6bac952011-07-04 11:28:30 -0700826 Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
Brian Curtine6242d72011-04-29 22:17:51 -0500827 additional information.
828
829.. data:: CREATE_NEW_CONSOLE
830
831 The new process has a new console, instead of inheriting its parent's
832 console (the default).
Brian Curtin73365dd2011-04-29 22:18:33 -0500833
Brian Curtine6242d72011-04-29 22:17:51 -0500834 This flag is always set when :class:`Popen` is created with ``shell=True``.
835
Brian Curtin30401932011-04-29 22:20:57 -0500836.. data:: CREATE_NEW_PROCESS_GROUP
837
838 A :class:`Popen` ``creationflags`` parameter to specify that a new process
839 group will be created. This flag is necessary for using :func:`os.kill`
840 on the subprocess.
841
842 This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
843
Brian Curtine6242d72011-04-29 22:17:51 -0500844
Benjamin Petersondcf97b92008-07-02 17:30:14 +0000845.. _subprocess-replacements:
846
Ezio Melotti402f75d2012-11-08 10:07:10 +0200847Replacing Older Functions with the :mod:`subprocess` Module
848-----------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000849
Nick Coghlanc29248f2011-11-08 20:49:23 +1000850In this section, "a becomes b" means that b can be used as a replacement for a.
Georg Brandl116aa622007-08-15 14:28:22 +0000851
852.. note::
853
Nick Coghlanc29248f2011-11-08 20:49:23 +1000854 All "a" functions in this section fail (more or less) silently if the
855 executed program cannot be found; the "b" replacements raise :exc:`OSError`
856 instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000857
Nick Coghlanc29248f2011-11-08 20:49:23 +1000858 In addition, the replacements using :func:`check_output` will fail with a
859 :exc:`CalledProcessError` if the requested operation produces a non-zero
860 return code. The output is still available as the ``output`` attribute of
861 the raised exception.
862
863In the following examples, we assume that the relevant functions have already
Ezio Melotti402f75d2012-11-08 10:07:10 +0200864been imported from the :mod:`subprocess` module.
Georg Brandl116aa622007-08-15 14:28:22 +0000865
866
867Replacing /bin/sh shell backquote
868^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
869
870::
871
872 output=`mycmd myarg`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000873 # becomes
874 output = check_output(["mycmd", "myarg"])
Georg Brandl116aa622007-08-15 14:28:22 +0000875
876
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000877Replacing shell pipeline
878^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000879
880::
881
882 output=`dmesg | grep hda`
Nick Coghlanc29248f2011-11-08 20:49:23 +1000883 # becomes
Georg Brandl116aa622007-08-15 14:28:22 +0000884 p1 = Popen(["dmesg"], stdout=PIPE)
885 p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000886 p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
Georg Brandl116aa622007-08-15 14:28:22 +0000887 output = p2.communicate()[0]
888
Gregory P. Smithe09d2f12011-02-05 21:47:25 +0000889The p1.stdout.close() call after starting the p2 is important in order for p1
890to receive a SIGPIPE if p2 exits before p1.
Georg Brandl116aa622007-08-15 14:28:22 +0000891
Nick Coghlanc29248f2011-11-08 20:49:23 +1000892Alternatively, for trusted input, the shell's own pipeline support may still
R David Murray28b8b942012-04-03 08:46:48 -0400893be used directly::
Nick Coghlanc29248f2011-11-08 20:49:23 +1000894
895 output=`dmesg | grep hda`
896 # becomes
897 output=check_output("dmesg | grep hda", shell=True)
898
899
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000900Replacing :func:`os.system`
901^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000902
903::
904
905 sts = os.system("mycmd" + " myarg")
Nick Coghlanc29248f2011-11-08 20:49:23 +1000906 # becomes
907 sts = call("mycmd" + " myarg", shell=True)
Georg Brandl116aa622007-08-15 14:28:22 +0000908
909Notes:
910
911* Calling the program through the shell is usually not required.
912
Georg Brandl116aa622007-08-15 14:28:22 +0000913A more realistic example would look like this::
914
915 try:
916 retcode = call("mycmd" + " myarg", shell=True)
917 if retcode < 0:
Collin Winterc79461b2007-09-01 23:34:30 +0000918 print("Child was terminated by signal", -retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000919 else:
Collin Winterc79461b2007-09-01 23:34:30 +0000920 print("Child returned", retcode, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000921 except OSError as e:
Collin Winterc79461b2007-09-01 23:34:30 +0000922 print("Execution failed:", e, file=sys.stderr)
Georg Brandl116aa622007-08-15 14:28:22 +0000923
924
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000925Replacing the :func:`os.spawn <os.spawnl>` family
926^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000927
928P_NOWAIT example::
929
930 pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
931 ==>
932 pid = Popen(["/bin/mycmd", "myarg"]).pid
933
934P_WAIT example::
935
936 retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
937 ==>
938 retcode = call(["/bin/mycmd", "myarg"])
939
940Vector example::
941
942 os.spawnvp(os.P_NOWAIT, path, args)
943 ==>
944 Popen([path] + args[1:])
945
946Environment example::
947
948 os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
949 ==>
950 Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
951
952
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000953
954Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
955^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000956
957::
958
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000959 (child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000960 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000961 p = Popen(cmd, shell=True, bufsize=bufsize,
962 stdin=PIPE, stdout=PIPE, close_fds=True)
963 (child_stdin, child_stdout) = (p.stdin, p.stdout)
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965::
966
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000967 (child_stdin,
968 child_stdout,
969 child_stderr) = os.popen3(cmd, mode, bufsize)
Georg Brandl116aa622007-08-15 14:28:22 +0000970 ==>
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000971 p = Popen(cmd, shell=True, bufsize=bufsize,
972 stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
973 (child_stdin,
974 child_stdout,
975 child_stderr) = (p.stdin, p.stdout, p.stderr)
976
977::
978
979 (child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
980 ==>
981 p = Popen(cmd, shell=True, bufsize=bufsize,
982 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
983 (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
984
985Return code handling translates as follows::
986
987 pipe = os.popen(cmd, 'w')
988 ...
989 rc = pipe.close()
Stefan Krahfc9e08d2010-07-14 10:16:11 +0000990 if rc is not None and rc >> 8:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000991 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000992 ==>
993 process = Popen(cmd, 'w', stdin=PIPE)
994 ...
995 process.stdin.close()
996 if process.wait() != 0:
Ezio Melotti985e24d2009-09-13 07:54:02 +0000997 print("There were some errors")
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000998
999
1000Replacing functions from the :mod:`popen2` module
1001^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1002
1003.. note::
1004
1005 If the cmd argument to popen2 functions is a string, the command is executed
1006 through /bin/sh. If it is a list, the command is directly executed.
1007
1008::
1009
1010 (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
1011 ==>
1012 p = Popen(["somestring"], shell=True, bufsize=bufsize,
1013 stdin=PIPE, stdout=PIPE, close_fds=True)
1014 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1015
1016::
1017
1018 (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
1019 ==>
1020 p = Popen(["mycmd", "myarg"], bufsize=bufsize,
1021 stdin=PIPE, stdout=PIPE, close_fds=True)
1022 (child_stdout, child_stdin) = (p.stdout, p.stdin)
1023
1024:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
1025:class:`subprocess.Popen`, except that:
1026
1027* :class:`Popen` raises an exception if the execution fails.
1028
1029* the *capturestderr* argument is replaced with the *stderr* argument.
1030
1031* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
1032
1033* popen2 closes all file descriptors by default, but you have to specify
Gregory P. Smithf5604852010-12-13 06:45:02 +00001034 ``close_fds=True`` with :class:`Popen` to guarantee this behavior on
1035 all platforms or past Python versions.
Eli Bendersky046a7642011-04-15 07:23:26 +03001036
Nick Coghlanc29248f2011-11-08 20:49:23 +10001037
Nick Coghlanc29248f2011-11-08 20:49:23 +10001038Legacy Shell Invocation Functions
Nick Coghlan32e4a582011-11-08 21:50:58 +10001039---------------------------------
Nick Coghlanc29248f2011-11-08 20:49:23 +10001040
1041This module also provides the following legacy functions from the 2.x
1042``commands`` module. These operations implicitly invoke the system shell and
1043none of the guarantees described above regarding security and exception
1044handling consistency are valid for these functions.
1045
1046.. function:: getstatusoutput(cmd)
1047
1048 Return ``(status, output)`` of executing *cmd* in a shell.
1049
1050 Execute the string *cmd* in a shell with :func:`os.popen` and return a 2-tuple
1051 ``(status, output)``. *cmd* is actually run as ``{ cmd ; } 2>&1``, so that the
1052 returned output will contain output or error messages. A trailing newline is
1053 stripped from the output. The exit status for the command can be interpreted
1054 according to the rules for the C function :c:func:`wait`. Example::
1055
1056 >>> subprocess.getstatusoutput('ls /bin/ls')
1057 (0, '/bin/ls')
1058 >>> subprocess.getstatusoutput('cat /bin/junk')
1059 (256, 'cat: /bin/junk: No such file or directory')
1060 >>> subprocess.getstatusoutput('/bin/junk')
1061 (256, 'sh: /bin/junk: not found')
1062
1063 Availability: UNIX.
1064
1065
1066.. function:: getoutput(cmd)
1067
1068 Return output (stdout and stderr) of executing *cmd* in a shell.
1069
1070 Like :func:`getstatusoutput`, except the exit status is ignored and the return
1071 value is a string containing the command's output. Example::
1072
1073 >>> subprocess.getoutput('ls /bin/ls')
1074 '/bin/ls'
1075
1076 Availability: UNIX.
1077
Nick Coghlan32e4a582011-11-08 21:50:58 +10001078
Eli Bendersky046a7642011-04-15 07:23:26 +03001079Notes
1080-----
1081
1082.. _converting-argument-sequence:
1083
1084Converting an argument sequence to a string on Windows
1085^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1086
1087On Windows, an *args* sequence is converted to a string that can be parsed
1088using the following rules (which correspond to the rules used by the MS C
1089runtime):
1090
10911. Arguments are delimited by white space, which is either a
1092 space or a tab.
1093
10942. A string surrounded by double quotation marks is
1095 interpreted as a single argument, regardless of white space
1096 contained within. A quoted string can be embedded in an
1097 argument.
1098
10993. A double quotation mark preceded by a backslash is
1100 interpreted as a literal double quotation mark.
1101
11024. Backslashes are interpreted literally, unless they
1103 immediately precede a double quotation mark.
1104
11055. If backslashes immediately precede a double quotation mark,
1106 every pair of backslashes is interpreted as a literal
1107 backslash. If the number of backslashes is odd, the last
1108 backslash escapes the next double quotation mark as
1109 described in rule 3.
1110
Eli Benderskyd2112312011-04-15 07:26:28 +03001111
Éric Araujo9bce3112011-07-27 18:29:31 +02001112.. seealso::
1113
1114 :mod:`shlex`
1115 Module which provides function to parse and escape command lines.