可能重复:
How to get output from subprocess.Popen()
Retrieving the output of subprocess.call()
这是我的问题。我有一个名为device_console的可执行文件。 device_console为设备提供命令行界面。在device_console中,可以运行四个命令:status,list,clear和exit。每个命令产生一个输出。举个例子:
[asdfgf@localhost ~]$ device_console
device_console> list
File A
File B
device_console> status
Status: OK
device_console> clear
All files cleared
device_console> list
device_console> exit
[asdfgf@localhost ~]$
作为测试的一部分,我想获得每个命令的输出。我想用它来使用Python。我正在看Python的子进程,但不知怎的,我无法将它们放在一起。你能帮忙吗?
答案 0 :(得分:2)
听起来你想要更像'期待'的东西。
结帐Pexpect
“Pexpect是一个纯Python模块 使Python成为更好的工具 控制和自动化其他 程式。 Pexpect类似于 Don Libes
Expect
系统,但是Pexpect 作为一个不同的界面 更容易理解。 Pexpect是 基本上是模式匹配系统。 它运行程序和手表输出。 当输出与给定模式匹配时 Pexpect可以像人一样回应 输入回复。“
答案 1 :(得分:2)
使用subprocess
module。例如:
import subprocess
# Open the subprocess
proc = subprocess.open('device_console', stdin=subprocess.PIPE, stdout.subprocess.PIPE)
# Write a command
proc.stdin.write('list\n')
# Read the results back -- this will block until a line of input is received
listing = proc.stdout.readline()
# When you're done, close the input stream so the subprocess knows to exit
proc.stdin.close()
# Wait for subprocess to exit (optional) and get its exit status
exit_status = proc.wait()