小编典典

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

python

因此,我注意到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与此。


阅读 229

收藏
2021-01-20

共1个答案

小编典典

我正在使用以下构造,尽管您可能要避免使用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
2021-01-20