• 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
    
    • 1
    • 2

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

    # python
    pip install python-pip
    
    • 1
    • 2

    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'))
    
    • 1
    • 2
    • 3
    • 4

    输出:

    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"]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    Linux系统上的pexpect spawn和expect方法

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

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

  • 相关阅读:
    【RuoYi-Vue-Plus】学习笔记 37 - OSS模块(七)V4.2.0+ 版本OSS加载流程
    @Async
    java版Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    基于SSM框架的人力资源管理系统毕业设计源码060936
    C语言——动态数组的创建和使用
    『Java安全』利用反射调用MimeLauncher.run()触发RCE
    6个机器学习可解释性框架
    2022 计算机网络考点大纲【太原理工大学】
    opengl 源码分析常见问题
    C++ Qt开发:MdiArea多窗体组件
  • 原文地址:https://blog.csdn.net/fengqianlang/article/details/134019013