我试图在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缓冲区的问题,即使冲洗不起作用。
我之前已经解决了这个问题。在Python2上使用Popn时,请尝试并使用此语法。