This article gives you a detailed account of Python in the use of subprocess batch execution of Linux commands, interested Friends reference learning. 
 
The relevant modules and functions that can execute shell commands are:
 
 
The functions of the relevant modules and functions for executing shell commands are implemented in the Subprocess module and provide richer functionality.
 
Subprocess
 
Pager
 
Execute command, return status code
 
 
>>> import subprocess>>> ret = Subprocess.call (["LS", "-l"], Shell=false) Total 4684-rw-r--r--1 root ro OT   454 5 12:20 aa.py-rw-r--r--1 root root    0 May 8 16:51 aa.txt-rw-r--r--1 root root 4783286 Apr one 16:39 Doc kertoolbox.exe-rw-r--r--1 root root   422 May 5 12:20 ip_info.txt-rw-r--r--1 root root   718 Apr 10:52 my.cnf> >> ret = Subprocess.call ("Ls-l", Shell=true) Total 4684-rw-r--r--1 root root   454 5 12:20 aa.py-rw-r--r--1 Root root    0 May 8 16:51 aa.txt-rw-r--r--1 root root 4783286 Apr 16:39 dockertoolbox.exe-rw-r--r--1 root root   422 May 5 12:20 ip_info.txt-rw-r--r--1 root root   718 Apr 10:52 my.cnf>>> print (ret) 0
 
 
Check_call
 
Executes the command, returns 0 if the execution status code is 0, or throws an exception
 
 
>>> subprocess.check_call (["LS", "-l"]) total 4684-rw-r--r--1 root root   454 May 5 12:20 aa.py-rw-r--r--1 roo  T root    0 May 8 16:51 aa.txt-rw-r--r--1 root root 4783286 Apr 16:39 dockertoolbox.exe-rw-r--r--1 root root   422 May 5 12:20 ip_info.txt-rw-r--r--1 root root   718 Apr 10:52 my.cnf0>>> subprocess.check_call ("Exit 1", SH Ell=true) Traceback (most recent): File ' <stdin> ', line 1, <module> file '/usr/local/python3.5/lib /python3.5/subprocess.py ", line 581, in Check_call  raise Calledprocesserror (Retcode, cmd) subprocess. Calledprocesserror:command ' exit 1 ' returned Non-zero exit status 1
 
 
Check_output
 
Executes the command, if the status code is 0, returns the execution result, otherwise throws an exception
 
 
>>> subprocess.check_output (["echo", "Hello world!"]) B ' Hello world!\n ' >>> subprocess.check_output ("Exit 1", Shell=true) Traceback (most recent call last): File "< Stdin> ", line 1, in <module> File"/usr/local/python3.5/lib/python3.5/subprocess.py ", line 626, in Check_output  **kwargs). StdOut File "/usr/local/python3.5/lib/python3.5/subprocess.py", line 708, in run  output=stdout, Stderr=stderr) subprocess. Calledprocesserror:command ' exit 1 ' returned Non-zero exit status 1
 
 
Subprocess. Popen (...)
 
Used to perform complex system commands
 
Parameters:
 
The Args:shell command, which can be a string or sequence type (for example: list, tuple)
 
BufSize: Specifies buffering. 0 unbuffered, 1 row buffer, other buffer size, negative system buffering
 
stdin, stdout, stderr: Indicates the standard input, output, and error handles of the program, respectively
 
PREEXEC_FN: Valid only on UNIX platforms, specifying an executable object (callable object) that will be called before the child process is run
 
CLOSE_SFS: Under the Windows platform, if Close_fds is set to true, the newly created child process will not inherit the input, output, and error pipes of the parent process.
 
Therefore, you cannot set Close_fds to true while redirecting the standard input, output, and error (stdin, stdout, stderr) of the child process.
 
Shell: Ibid.
 
CWD: Used to set the current directory of child processes
 
ENV: The environment variable used to specify the child process. If env = None, the environment variables of the child process are inherited from the parent process.
 
Universal_newlines: Different system newline characters, True----agree to use N
 
Startupinfo and Createionflags are only valid under Windows
 
will be passed to the underlying CreateProcess () function to set some properties of the child process, such as: the appearance of the main window, the priority of the process, etc.
 
Execute common commands
 
 
>>> import subprocess>>> Ret1 = subprocess. Popen (["mkdir", "T1"]) >>> Ret2 = subprocess. Popen ("mkdir T2", shell=true) >>> print (RET1) <subprocess. Popen object at 0x7f4d7609dd30>>>> print (Ret2) <subprocess. Popen Object at 0x7f4d7609dc18>
 
 
The commands for terminal input are divided into two types:
 
 
  
  - Input can be output, such as: ifconfig 
- Input to an environment that relies on re-entry, such as: Python 
>>> import subprocess>>> obj = subprocess. Popen ("mkdir T3", Shell=true, cwd= '/tmp/',) >>> import subprocess>>> obj = subprocess. Popen (["Python"], stdin=subprocess. PIPE, Stdout=subprocess. PIPE, Stderr=subprocess. PIPE, Universal_newlines=true) >>> obj.stdin.write ("print (1) \ n") 9>>> Obj.stdin.write ("Print (2)") 8>>> obj.stdin.close () >>> cmd_out = Obj.stdout.read () >>> obj.stdout.close () >>> Cmd_error = Obj.stderr.read () >>> obj.stderr.close () >>> print (cmd_out) 12>>> print (cmd_ Error
 
 
 
>>> import subprocess>>> >>> obj = subprocess. Popen (["Python"], stdin=subprocess. PIPE, Stdout=subprocess. PIPE, Stderr=subprocess. PIPE, Universal_newlines=true) >>> obj.stdin.write ("print (1) \ n") 9>>> Obj.stdin.write ("Print (2)") 8>>> >>> out_error_list = obj.communicate () >>> print (out_error_list) (' 1\n2\n ', ')
 
 
 
>>> obj = subprocess. Popen (["Python"], stdin=subprocess. PIPE, Stdout=subprocess. PIPE, Stderr=subprocess. PIPE, universal_newlines=true) >>> out_error_list = Obj.communicate (' Print ("' Hello ') ') >>> print (out _error_list) (' hello\n ', ')