-
subprocess 官网:
subprocess -
使用方式
run()方法来实现子进程调用优先选用
Popen()虽然强大但是存在阻塞问题
run()
import subprocess
import shlex
# 需要执行的命令
command_line = "ls -al /usr"
# 命令格式化
args = shlex.split(command_line)
# 执行命令进程
a=subprocess.run(args,shell=True,stdout=subprocess.PIPE)
# 打印命令输出的信息
print(str(a.stdout.decode(encoding='utf-8')))
Popen()
subprocess.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)
import subprocess
import shlex
# 需要执行的命令
command_line = "ls -al /usr"
# 命令格式化
args = shlex.split(command_line)
# 执行命令进程
run=subprocess.run(args,shell=True,stdout=subprocess.PIPE)
# 等待进程结束
run.wait()
# 返回状态
print(str(run.returncode))
run.kill()
杀死这个子进程。
run.stdin
在创建run对象时,参数stdin设置为subprocess.PIPE时run.stdin会返回一个文件对象用于对这个子进程发送指令。否则返回None。
run.stdout
在创建run对象时,参数stdout设置为subprocess.PIPE时run.stdout将返回一个文件对象来返回子进程执行结果信息,否则返回 None。
run.stderr
如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象来返回子进程执行失败的错误信息。否则返回 None。
run.pid
获取子进程的进程ID。
run.poll()
用于检查子进程是否已经结束,设置并返回returncode属性。
run.wait()
等待子进程结束,设置并返回returncode属性
run.returncode
获取进程的返回值,如果进程还没有结束,返回None