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:标准输出\标准输入\错误信息

  1. command = 'xxxxxx'
  2. report = subprocess.run(command, shell=True)
  3. if report.returncode == 0:
  4. print('命令执行成功')
  5. else:
  6. 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类

  1. g = subprocess.Popen("ping www.baidu.com", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  2. g.poll() # 检查命令是否结束,未结束返回None
  3. g.wait() # 等待命令完成,并返回结果状态
  4. g.terminate() # 停止进程
  5. g.kill() # 杀掉进程
  6. g.communicate() # 会阻塞父进程,直到子进程完成
  7. g.pid # 获取进程号
  8. g.returncode # 为0表示执行成功

参考:https://www.jianshu.com/p/430c411160f8