Python 中的 Pexpect

我们将通过示例介绍Python中的Pexpect。


Python 中的 Pexpect

Python 是一种非常流行的语言,用于数据科学和机器学习。 它是一种非常强大的语言,因为 Python 具有可用于不同目的的内置库。

在这篇文章中,我们将研究Python中的pexpect。 Pexpect 是一个功能强大的库,用于创建子进程并自动控制它们。

它可以测试漏洞或执行我们能想到的任何任务。

大多数情况下,它可用于测试系统的用例,以检查系统在某些任务下的工作情况以及系统在这些任务下的执行情况。 我们还可以用它来自动化日常生活中的一些小任务。

我们可以使用它来组织安装脚本,以便在多个服务器上下载软件包。 Pexpect 是 Expect 系列交互式多线程命令行解释器的 Python 接口。

Pexpect 是一个用于通过网络连接在远程计算机上生成网络程序的库。

它通常用于编写网络服务脚本,例如 SSH 或 Telnet。 它对于独立的生成程序也很有用。

现在让我们在我们正在开发的软件中安装 pexpect。 在 Python 中安装 pexpect 最简单的方法是使用 pip 包管理器。

我们可以使用以下命令安装它。

# python
pip install pexpect

如果没有安装pip,可以使用以下命令安装。

# python
pip install python-pip

Python 中 Pexpect 的方法

现在,让我们讨论如何在应用程序中使用 pexpect。 我们可以通过三种不同的方法在我们的应用程序中使用 pexpect。

我们将讨论的第一个方法是 run() 方法。

Pexpect 中的 Run() 方法

Run() 是 pexpect 的一个强大方法,可用于执行命令并返回从该命令接收到的结果。 此方法取代了另一个强大的库方法 os.system。

现在,让我们使用这个方法通过 echo 命令打印 Hello World。 首先,我们将导入 pexpect 库,然后,我们将使用 run() 方法,如下所示。

# python
import pexpect

print(pexpect.run('echo Hello World'))

输出:

Linux系统上的pexpect run方法

从上面的示例中可以看出,我们的方法使用 pexpect 的 run() 方法执行 Python 文件内的命令行代码。

从上面的示例中需要注意的一件重要事情是,该命令适用于 Linux 系统,而不是 Windows。

Pexpect 中的 Spawn() 方法

现在我们将讨论 pexpect 的另一种方法,该方法可用于生成子进程并控制它们。 由于我们用命令行提示符替换了 run() 方法中的字符串,因此我们可以在 spawn() 中执行相同的操作,并使用它来执行 shell 命令并在执行后获取结果。

现在,让我们在示例中使用它,在该示例中我们将使用 spawn() 方法启动一个子进程。 我们将使用相同的场景来使用 spawn 来回显字符串。

之后,我们将向 expect() 方法发送一个数组,以从数组中的字符串匹配上述命令,并返回与我们的命令匹配的元素的位置,如下所示。

# python
import pexpect

childProcess = pexpect.spawn("echo Hello World")

# prints he matched index of string.
print(childProcess.expect(["Python", "Hello World", "Child Process"]))

输出:

Linux系统上的pexpect spawn和expect方法

从上面的例子可以看出,字符串在数组中的位置是第二位,而且数组是从0开始的,所以输出的是正确的位置。

在本文中,我们讨论了 pexpect 的三种方法,它们可用于执行不同的功能,并且它们可以一起使用以使其成为一个大函数,如上一个示例所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pexpectPython语言的一个第三方模块,用于控制和自动化操作控制台或终端程序。它可以实现自动输入命令、自动应答、自动化交互式控制等功能,适用于自动化测试、批量操作等场景。 pexpect模块的常用类和方法包括: - spawn类:用于启动一个子进程并连接到其标准输入、输出和错误输出,可以在子进程执行命令。 - expect方法:等待子进程输出特定的字符串或正则表达式,并返回匹配的字符串。 - send方法:向子进程发送字符串或命令。 - interact方法:进入交互模式,允许用户手动输入和输出。 - timeout属性:设置expect方法等待子进程输出的超时时间。 下面是一个示例代码,演示了如何使用pexpect模块连接到telnet服务器,并执行登录和命令操作: ``` import pexpect host = '127.0.0.1' port = 23 user = 'user' password = 'password' command = 'ls' # 启动telnet进程 child = pexpect.spawn('telnet %s %d' % (host, port)) # 等待登录提示 child.expect('login:') # 发送用户名 child.sendline(user) # 等待密码提示 child.expect('Password:') # 发送密码 child.sendline(password) # 等待登录成功提示 child.expect('$') # 发送命令 child.sendline(command) # 等待命令输出 child.expect('$') # 输出命令结果 print(child.before.decode()) # 退出交互模式 child.interact() ``` 这段代码,使用spawn类启动一个telnet子进程,并通过expect和send方法实现自动登录和执行命令。最后使用interact方法进入交互模式,允许用户手动操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值