我有一些可执行文件,它是一个命令处理器。我试图捕获它对命令的响应。我使用python子进程。
以下是我的剧本:
import subprocess
# Open the subprocess
proc = subprocess.Popen('comproc.exe', \
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
# Write a command
proc.stdin.write('help cfg_open\n')
# Close the input stream so the subprocess knows to exit
proc.stdin.close()
data = 0
while data!="":
data = proc.stdout.readline()
print data
# Wait for subprocess to exit
exit_status = proc.wait()
在发出" help cfg_open"之前的输出("欢迎使用命令proc(c)2015 ...")被捕获,而对#c;帮助cfg_open"的回应不是。 如果我发出一些不存在的命令,则会正确捕获stderr。
通过cmd重定向工作非常出色:
c:\>comproc.exe >1.txt
help cfg_open
exit
c:\>
我在1.txt中获得整个输出。
非常感谢任何帮助!