|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r"""subprocess - Subprocesses with accessible I/O streams |
|
This module allows you to spawn processes, connect to their |
input/output/error pipes, and obtain their return codes. This module |
intends to replace several other, older modules and functions, like: |
|
os.system |
os.spawn* |
os.popen* |
popen2.* |
commands.* |
|
Information about how the subprocess module can be used to replace these |
modules and functions can be found below. |
|
|
|
Using the subprocess module |
=========================== |
This module defines one class called Popen: |
|
class Popen(args, bufsize=0, executable=None, |
stdin=None, stdout=None, stderr=None, |
preexec_fn=None, close_fds=False, shell=False, |
cwd=None, env=None, universal_newlines=False, |
startupinfo=None, creationflags=0): |
|
|
Arguments are: |
|
args should be a string, or a sequence of program arguments. The |
program to execute is normally the first item in the args sequence or |
string, but can be explicitly set by using the executable argument. |
|
On UNIX, with shell=False (default): In this case, the Popen class |
uses os.execvp() to execute the child program. args should normally |
be a sequence. A string will be treated as a sequence with the string |
as the only item (the program to execute). |
|
On UNIX, with shell=True: If args is a string, it specifies the |
command string to execute through the shell. If args is a sequence, |
the first item specifies the command string, and any additional items |
will be treated as additional shell arguments. |
|
On Windows: the Popen class uses CreateProcess() to execute the child |
program, which operates on strings. If args is a sequence, it will be |
converted to a string using the list2cmdline method. Please note that |
not all MS Windows applications interpret the command line the same |
way: The list2cmdline is designed for applications using the same |
rules as the MS C runtime. |
|
bufsize, if given, has the same meaning as the corresponding argument |
to the built-in open() function: 0 means unbuffered, 1 means line |
buffered, any other positive value means use a buffer of |
(approximately) that size. A negative bufsize means to use the system |
default, which usually means fully buffered. The default value for |
bufsize is 0 (unbuffered). |
|
stdin, stdout and stderr specify the executed programs' standard |
input, standard output and standard error file handles, respectively. |
Valid values are PIPE, an existing file descriptor (a positive |
integer), an existing file object, and None. PIPE indicates that a |
new pipe to the child should be created. With None, no redirection |
will occur; the child's file handles will be inherited from the |
parent. Additionally, stderr can be STDOUT, which indicates that the |
stderr data from the applications should be captured into the same |
file handle as for stdout. |
|
If preexec_fn is set to a callable object, this object will be called |
in the child process just before the child is executed. |
|
If close_fds is true, all file descriptors except 0, 1 and 2 will be |
closed before the child process is executed. |
|
if shell is true, the specified command will be executed through the |
shell. |
|
If cwd is not None, the current directory will be changed to cwd |
before the child is executed. |
|
If env is not None, it defines the environment variables for the new |
process. |
|
If universal_newlines is true, the file objects stdout and stderr are |
opened as a text files, but lines may be terminated by any of '\n', |
the Unix end-of-line convention, '\r', the Macintosh convention or |
'\r\n', the Windows convention. All of these external representations |
are seen as '\n' by the Python program. Note: This feature is only |
available if Python is built with universal newline support (the |
default). Also, the newlines attribute of the file objects stdout, |
stdin and stderr are not updated by the communicate() method. |
|
The startupinfo and creationflags, if given, will be passed to the |
underlying CreateProcess() function. They can specify things such as |
appearance of the main window and priority for the new process. |
(Windows only) |
|
|
This module also defines two shortcut functions: |
|
call(*args, **kwargs): |
Run command with arguments. Wait for command to complete, then |
return the returncode attribute. |
|
The arguments are the same as for the Popen constructor. Example: |
|
retcode = call(["ls", "-l"]) |
|
|
Exceptions |
---------- |
Exceptions raised in the child process, before the new program has |
started to execute, will be re-raised in the parent. Additionally, |
the exception object will have one extra attribute called |
'child_traceback', which is a string containing traceback information |
from the childs point of view. |
|
The most common exception raised is OSError. This occurs, for |
example, when trying to execute a non-existent file. Applications |
should prepare for OSErrors. |
|
A ValueError will be raised if Popen is called with invalid arguments. |
|
|
Security |
-------- |
Unlike some other popen functions, this implementation will never call |
/bin/sh implicitly. This means that all characters, including shell |
metacharacters, can safely be passed to child processes. |
|
|
Popen objects |
============= |
Instances of the Popen class have the following methods: |
|
poll() |
Check if child process has terminated. Returns returncode |
attribute. |
|
wait() |
Wait for child process to terminate. Returns returncode attribute. |
|
communicate(input=None) |
Interact with process: Send data to stdin. Read data from stdout |
and stderr, until end-of-file is reached. Wait for process to |
terminate. The optional stdin argument should be a string to be |
sent to the child process, or None, if no data should be sent to |
the child. |
|
|
|