美文网首页
subprocess.Popopen用法

subprocess.Popopen用法

作者: 非鱼2018 | 来源:发表于2021-04-22 19:29 被阅读0次
    #coding=utf-8
    import subprocess
    
    # 如果使用了stdout=subprocess.PIPE,则要自己打印输出,否则控制台不会打印
    #
    result=subprocess.Popen('dir',shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
    
    result.wait()
    outs,errs=result.communicate()  #返回元组,标准输出以及err
    #执行成功则打印输出的信息
    if result.returncode==0:
        for i in outs.splitlines():
            print(i.decode('GBK')) #UTF-8
    

    只想获取失败信息,忽略成功信息

    result=subprocess.Popen('ddd',shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
    
    result.wait()
    outs,errs=result.communicate()
    #执行成功则打印输出的信息
    if not result.returncode==0:
        for i in errs.splitlines():
            print(i.decode('GBK')) #UTF-8
    
    

    有时调用稍微复杂的命令,该命令又会调用其他命令,虽然返回时0,但err却不为空,因此再加层判断

    result=subprocess.Popen('ddd',shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
    
    result.wait()
    outs,errs=result.communicate()
    #执行成功则打印输出的信息 注意b''即使为不为None,因此不能用not None来判断
    if not result.returncode==0 or not len(errs)==0:
        for i in errs.splitlines():
            print(i.decode('GBK')) #返回为字节,需要转成str
        for i in outs.splitlines():
            print(i.decode('GBK'))  # UTF-8
    
    

    相关文章

      网友评论

          本文标题:subprocess.Popopen用法

          本文链接:https://www.haomeiwen.com/subject/eukjcltx.html