[英]Python2 Popen in Windows
我试图在 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>
。 但是,output 变量与字符串无关。 它始终是一个空字符串。
如果我将stdout=subprocess.PIPE
=subprocess.PIPE 更改为stdout=sys.stdout
,它会打印输出。
但是,我需要获取 output 来解析我输入的结果。 所以,我想 grep output 是程序。 我不确定为什么 subprocess.PIPE 不起作用。
此外,当我更改为stdout=sys.stdout
时,它的 output 无限打印Command>
。 在我输入字符串之前,程序应该只打印一次Command>
。
我还尝试使用p.communicate()[0]
获取 output ,但它不起作用。
我不知道这种行为。 当我在 Linux 环境中工作时,没有这样的问题。 我可能认为这是标准输入或标准输出缓冲区的问题,即使刷新不起作用。
我以前解决过这个问题。 在 Python2 上使用 Popn 时尝试使用此语法。
p=subprocess.Popen([python(你的 python 所在的位置), 文件名, args],stdout=PIPE).stdout.read()
让我知道这是否适合你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.