Python子进程获取孩子的输出[重复]
Posted
技术标签:
【中文标题】Python子进程获取孩子的输出[重复]【英文标题】:Python subprocess get child's output [duplicate] 【发布时间】:2011-01-14 15:10:34 【问题描述】:可能的重复: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 的子进程,但不知何故我无法将它们放在一起。你能帮忙吗?
【问题讨论】:
所有这些的重复:***.com/search?q=%5Bpython%5D+subprocess+output。具体来说,***.com/questions/1388753/… 只是众多完全相同的副本之一。 【参考方案1】:使用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()
【讨论】:
【参考方案2】:听起来你想要更像“期望”的东西。
查看Pexpect
"Pexpect 是一个纯 Python 模块 使 Python 成为更好的工具 控制和自动化其他 程式。 Pexpect 类似于 Don Libes
Expect
系统,但 Pexpect 作为一个不同的界面 更容易理解。预期是 基本上是一个模式匹配系统。 它运行程序并监视输出。 当输出匹配给定模式时 Pexpect 可以像人类一样做出反应 输入回复。”
【讨论】:
谢谢。我也会研究 Pexpect。以上是关于Python子进程获取孩子的输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章
从Python中的imagemagick子进程读取输出[重复]
子进程中的python getoutput()等价物[重复]