输出不会是stdout

时间:2018-05-15 15:08:20

标签: python subprocess stdout

我有一些可执行文件,它是一个命令处理器。我试图捕获它对命令的响应。我使用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中获得整个输出。

非常感谢任何帮助!

0 个答案:

没有答案