如何读懂python模块subprocess

关于subprocess模块,大致需要看三篇文章:

  1. https://www.jianshu.com/p/2eb33b491024 # 力荐这篇
  2. https://www.runoob.com/w3cnote/python3-subprocess.html
  3. https://blog.csdn.net/imzoer/article/details/8678029

示例代码
如果想得到进程的输出,管道(subprocess.PIPE)是个很方便的方法,这样:

import time
import subprocess

def cmd(command):
    subp = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")
    subp.wait(2)
    # # 上面等待2个时间单位是为了让poll()返回returncode,因为如果子进程没执行结束,poll()返回的是none
    if subp.poll() == 0: 
        print(subp.communicate()[0]) # subp.communicate()返回的是一个tuple,形式为 (stdoutput,erroutput)
        # 注意:communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成.
    else:
        print("失败")


cmd("java --version")
cmd("exit 1")

结果如下:
在这里插入图片描述

p=subprocess.Popen("dir", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdoutput,erroutput) = p.communicate()

p.communicate会一直等到进程退出,并将标准输出和标准错误输出返回,这样就可以得到子进程的输出了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值