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

Unable to Exit Python Script (Need To Press Enter to Exit)

我有一个 python 脚本,它使用子进程执行以下命令,但是当发生某些错误时它会卡住:

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,

输出:

There was a communication problem.
Failed.

Press enter to exit...

由于上面的输出,我的程序只有手动按下任意键才能退出。请帮助告诉我如何处理上述响应并退出我的代码。如果没有错误,上面的程序运行良好。

首先,代码的最后两行(在 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