Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法退出Python脚本(需要按Enter键退出)_Python_Python 2.7_Subprocess - Fatal编程技术网

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

无法退出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

我有一个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,
输出:

出现通信问题。
失败了

按回车键退出


由于上述输出,我的程序无法退出,直到我手动按下任何键。请帮助我演示如何处理上述响应并退出我的代码。如果没有错误,上述程序工作正常。

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