如何使用Python运行子进程,等待其退出并以字符串形式获取完整的stdout?

发布于 2021-01-29 15:09:27

因此,我注意到subprocess.call在等待命令完成之后再继续执行python脚本时,除了使用之外,我无法获取标准输出subprocess.Popen。是否有其他替代函数调用会等到完成?(我也尝试过Popen.wait

注意:我正试图避免os.system打电话

result = subprocess.Popen([commands...,
                        self.tmpfile.path()], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = result.communicate()
print out+"HIHIHI"

我的输出:

HIHIHI

注意:我正在尝试wine与此。

关注者
0
被浏览
64
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我正在使用以下构造,尽管您可能要避免使用shell=True。这将为您提供任何命令的输出和错误消息,以及错误代码:

    process = subprocess.Popen(cmd, shell=True,
                               stdout=subprocess.PIPE, 
                               stderr=subprocess.PIPE)
    
    # wait for the process to terminate
    out, err = process.communicate()
    errcode = process.returncode
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看