无法退出Python脚本(需要按Enter键退出)
我有一个python脚本,它使用subprocess执行以下命令,但当出现错误时,它会被卡住:无法退出Python脚本(需要按Enter键退出),python,python-2.7,subprocess,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.st
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,
输出:
出现通信问题。失败了 按回车键退出
由于上述输出,我的程序无法退出,直到我手动按下任何键。请帮助我演示如何处理上述响应并退出我的代码。如果没有错误,上述程序工作正常。首先,代码的最后两行(在
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,
其次,如果命令
完成得太快,则while
循环可能在您完全读取数据之前结束。要解决此问题,请使用communicate()
方法:
output = process.communicate()[0]
print output,
下面是与
Popen.communicate()相关的代码。首先,代码的最后两行(在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,
其次,如果命令
完成得太快,则while
循环可能在您完全读取数据之前结束。要解决此问题,请使用communicate()
方法:
output = process.communicate()[0]
print output,
以下是与Popen.communicate()相关的Popen.communicate()
我的荣幸!很乐意帮忙。@user1891916:@user1891916:我不知道这个答案怎么可能解决“按enter键退出…”的问题。您需要stdin=DEVNULL
或stdin=PIPE
和process.stdin.close()
或通过process.communicate()
(.communicate()
不使用stdin=PIPE
不会在应用程序的stdin上产生EOF)我的荣幸!很乐意帮忙。@user1891916:@user1891916:我不知道这个答案怎么可能解决“按enter键退出…”的问题。您需要stdin=DEVNULL
或stdin=PIPE
和process.stdin.close()
或通过process.communicate()
隐式进行(.communicate()
无stdin=PIPE
不会在应用程序的stdin上产生EOF)