无法退出Python脚本(需要按Enter退出)

时间:2015-07-29 18:48:23

标签: python python-2.7 subprocess

我有一个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退出...

由于上述输出,我的程序无法退出,直到我手动按任意键。请帮助告诉我如何处理上述响应并退出我的代码。如果没有错误,上述程序效果很好。

1 个答案:

答案 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()

相关的docs