我有一个python脚本,它使用subprocess执行以下命令,但是在发生错误时它会卡住:
import subprocess
COMMAND = " Application.exe arg1 arg2"
process = subprocess.Popen(COMMAND, stdout=subprocess.PIPE, stderr=None, shell=True)
while process.poll() is None:
output = process.stdout.readline()
print output,
输出:
存在沟通问题 失败。
按Enter退出...
由于上述输出,我的程序无法退出,直到我手动按任意键。请帮助告诉我如何处理上述响应并退出我的代码。如果没有错误,上述程序效果很好。
答案 0 :(得分:0)
首先,代码的最后两行(在while
循环中)需要正确缩进:
import subprocess
COMMAND = " Application.exe arg1 arg2"
process = subprocess.Popen(COMMAND, stdout=subprocess.PIPE, stderr=None, shell=True)
while process.poll() is None:
output = process.stdout.readline()
print output,
其次,如果COMMAND
完成得太快,那么您的while
循环可能会在您完全读取数据之前结束。要解决此问题,请使用communicate()
方法:
output = process.communicate()[0]
print output,
以下是与Popen.communicate()