首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的多终端处理

python中的多终端处理
EN

Stack Overflow用户
提问于 2015-06-24 09:15:28
回答 1查看 1.3K关注 0票数 0

我有一个python应用程序,我想把它作为一个多终端处理程序,我希望每个对象都有自己的终端,每个对象运行自己的实例,就像我在Linux中运行两个或多个独立的终端(/bin/sh或/bin/bash)时一样

示例:(只是逻辑而不是代码)

代码语言:javascript
复制
first_terminal = terminalInstance()
second_terminal = terminalInstance()
first_result = first_terminal.doSomething("command")
second_result = second_terminal.doSomething("command")

实际上,我需要让每个终端在虚拟环境中获取stdin & stdout并控制它们,这就是为什么它们必须分开的原因,这在python范围内是可能的吗?我见过很多处理单个终端的代码,但是如何使用多个终端来实现呢?PS我不想包含want循环(如果可能的话),因为我想增加可伸缩性,从处理2个或更多的终端到我的系统所能处理的?是否可以通过引用控制它们,给每个终端一个引用,然后调用该对象并发出命令?

EN

回答 1

Stack Overflow用户

发布于 2015-06-24 11:43:11

除其他外,pexpect模块(https://pypi.python.org/pypi/pexpect/)允许您通过伪tty启动程序,这“允许您的脚本生成一个子应用程序并控制它,就像一个人在输入命令一样”。

您可以很容易地生成多个命令,每个命令运行在一个单独的伪tty中,并由一个单独的对象表示,并且可以单独地与每个对象交互。在交互的时间/方式上有很大的灵活性。您可以向它们发送输入,并读取它们的输出,无论是阻塞输出还是非阻塞输出,并包含超时和可选输出。

下面是一个简单的会话示例(运行bash,让它执行"ls“命令,收集第一行输出)。

代码语言:javascript
复制
import pexpect
x = pexpect.spawn("/bin/bash")
x.sendline("ls")
x.expect("\n")  # End of echoed command
x.expect("\n")  # End of first line of output
print x.before  # Print first line of output

请注意,您将接收来自终端的所有输出,通常包括发送给它的每个字符的回显副本。如果运行类似shell的内容,还可能需要设置shell提示符(或确定正在使用的shell提示符),并将其用于解析输出(即查找每个命令输出的结尾)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31022505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档