1.什么是subprocess
subprocess用来生成子进程,并可通过管道连接输入、输出、错误,并获得其返回值,subprocess提供了一些管理标准流(standard stream)和管道(PIPE)的工具,供进程间使用文本通信
2.subprocess常用函数
run、call、check_call、check_putput、getoutput、getstatusoutput
run:
subprocess.run[args[,stdout…]]:执行args命令,返回CompletedProcess
增加参数stdout,返回CompletedProcess(args,returncode,stdout)
不加参数stdout,返回CompletedProcess(args,returncode)
获取输出结果:
results = subprocess.run(args,stdout=subprocess.PIPE).stdout
stdout\stdin\stderr:标准输出\标准输入\错误信息
command = 'xxxxxx'
report = subprocess.run(command, shell=True)
if report.returncode == 0:
print('命令执行成功')
else:
print('命令执行失败')
call:
subprocess.call[arg[,stdout..]]:执行arg命令,返回执行结果状态码,执行成功返回0,反之返回1
checkcall:
_subprocess.check_call[arg[,stdout..]]:执行arg命令,返回执行结果状态码,执行成功返回0,反之抛出异常
checkoutput:
_subprocess.check_output[arg[,stdout..]]:执行arg命令,执行成功返回执行结果,反之抛出异常
getoutput:
subprocess.getoutput(cmd):执行cmd命令,返回输出结果,失败不会抛出异常
getstatusoutput:
subprocess.getstatusoutput(cmd):执行cmd命令,返回元组类型输出结果,执行陈工状态为0,反之为1
3.subprocess.Popen类
g = subprocess.Popen("ping www.baidu.com", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
g.poll() # 检查命令是否结束,未结束返回None
g.wait() # 等待命令完成,并返回结果状态
g.terminate() # 停止进程
g.kill() # 杀掉进程
g.communicate() # 会阻塞父进程,直到子进程完成
g.pid # 获取进程号
g.returncode # 为0表示执行成功