python中的多终端处理

2024-10-04 05:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

first_terminal = terminalInstance()
second_terminal = terminalInstance()
first_result = first_terminal.doSomething("command")
second_result = second_terminal.doSomething("command")

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


Tags: 对象代码应用程序终端标准binasresult
1条回答
网友
1楼 · 发布于 2024-10-04 05:34:07

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

您可以轻松地生成多个命令,每个命令在单独的pseudo tty中运行,并由一个单独的对象表示,您可以单独与每个对象交互。在何时/如何互动方面有很大的灵活性。您可以向它们发送输入,并读取它们的输出(阻塞或非阻塞),并合并超时和可选输出。在

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

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提示符),并在解析输出时使用它(即查找每个命令输出的结尾)。在

相关问题 更多 >