Windows中的Python2 Popen

问题描述 投票:2回答:1

我试图在python 2上使用Popen执行Windows控制台exe程序。

import subprocess

#
# Other codes
#

p = subprocess.Popen(path_of_exe, stdin=subprocess.PIPE, stdout=subprocess.PIPE)

output = p.stdout.read()
print output
p.stdin.write('mystring')

程序执行时,程序将打印Command>。但是,输出变量与字符串无关。它始终是一个空字符串。

如果将stdout=subprocess.PIPE更改为stdout=sys.stdout,则会打印输出。

但是,我需要获取输出以解析输入中的结果。所以,我想grep输出是程序。我不确定为什么subprocess.PIPE无法正常工作。

而且,当我更改为stdout=sys.stdout时,其输出将无限打印Command>。该程序只应在我输入字符串之前打印Command>

我也尝试使用p.communicate()[0]获取输出,但是它不起作用。

我不知道这种行为。当我在Linux环境中工作时,不会出现这样的问题。我可能认为这是stdin或stdout缓冲区的问题,即使冲洗不起作用。

python subprocess popen
1个回答
0
投票

我之前已经解决了这个问题。在Python2上使用Popn时,请尝试并使用此语法。

© www.soinside.com 2019 - 2024. All rights reserved.