Python 中的 Pexpect

news2024/10/7 16:27:07

我们将通过示例介绍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 的三种方法,它们可用于执行不同的功能,并且它们可以一起使用以使其成为一个大函数,如上一个示例所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1138186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

找不到msvcr90.dll无法继续执行代码怎么解决

msvcr90.dll是Microsoft Visual C 2008 SP1可再发行程序包中的一个动态链接库文件。它包含了用于支持C编程语言的类和函数。动态链接库是一种可重用的代码模块,它可以在多个应用程序之间共享,从而减少代码量并提高开发效率。那么遇到msvcr90.dll丢失怎么…

【计算机网络】从输入URL到页面都显示经历了什么??

文字总结 ① DNS 解析:当用户输入一个网址并按下回车键的时候,浏览器获得一个域名,而在实际通信过程中,我们需要的是一个 IP 地址,因此我们需要先把域名转换成相应 IP 地址。浏览器会首先从缓存中找是否存在域名&…

【继承之extends关键字和super关键字】

文章目录 继承是什么?为什么要继承?怎么继承?继承的语法 关键字extends 子类中访问父类的成员变量1.子类和父类的成员变量不同名2.子类和父类成员变量同名 子类中访问父类的成员方法1. .子类和父类的成员方法名字不同2..子类和父类的成员方法…

JUC并发编程之Synchronized锁优化

目录 1. Java对象头 2. Synchronized锁优化 2.1 偏向锁 2.2 轻量级锁 2.3 重量级锁 2.4 各种锁对比 1. Java对象头 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance D…

数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表

一、线性表抽象数据类型 线性表的定义 定义:零个或多个数据元素的有限序列 线性表的特点: 1.它是一个序列 数据元素之间是有序的 数据元素之间是一对一的关系 2.有限性 线性表的数据元素个数是有限的 注意:零个数据元素的有限序列又…

NewStarCTF2023week4-依旧是空白(snow隐写)

打开附件的空白图片,CRC报错,很可能是高度被修改 爆出图片正确的宽度和高度并修复 打开看到密码 password: s00_b4by_f0r_y0u 另一个文件是空白的txt文档,大致看了一下像是不可见字符,尝试 white_space,发现不是&…

Uservue 中 keep-alive 组件的作用

目录 前言 用法 代码 理解 keep-alive 是 Vue.js 中一个内置的组件,它能够将不活动的组件实例保存在内存中,防止其被销毁,以便在后续需要时能够快速重新渲染。这个功能在一些需要频繁切换但不希望每次都重新渲染的场景中非常有用&#xf…

详解预处理(2)

目录 #undef 命令行定义 条件编译 NO1. NO2.多个分支的条件编译 NO3.判断是否被定义 NO4.嵌套指令 文件包含 头文件被包含的方式 本地文件包含 库文件包含 嵌套文件包含 其他预处理指令 今天接着继续讲解预处理的点,前面已经深入学习了#define。 #unde…

基于Springboot 游戏娱乐信息平台-计算机毕设 附源码 04691

Springboot 游戏娱乐信息平台 目 录 摘要 1 绪论 1.1研究内容 1.2国内外研究慨况 1.3研究方法 1.4论文结构与章节安排 2 游戏娱乐信息平台系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性…

EvilAppleJuice(邪恶苹果汁)-ESP32C3项目(iphone疯狂弹窗)

原作者作品页: ckcr4lyf/EvilAppleJuice-ESP32: Spam Apple Proximity Messages via an ESP32 (github.com) 代码优化一下,增加呼吸灯效果方便知道设备运行情况,我是用arduino烧录 仅作交流学习使用,请勿在公开场合滥用 运行效果…

黑豹程序员-Python入门-for循环

文章目录 1、for循环语法2、巩固案例:长安三万里你记得的三位诗人?实现步骤:第一步:新建一个列表,存储诗人姓名第二步:列表用[]表示,元素之间用逗号,分隔第三步:用列表[索引]的方法将…

莫名其妙el-table不显示问题

完全复制element-ui中table代码,发现表格仍然不显示,看别人都说让降低版本,可我不想降低啊,不然其他组件有可能用不了,后来发现可以通过配置vite.config.js alias: {: path.resolve(__dirname, src),vue: vue/dist/vue…

【Docker】Python Flask + Redis 练习

一、构建flask镜像 1.准备文件 创建app.py,内容如下 from flask import Flask from redis import Redis app Flask(__name__) redis Redis(hostos.environ.get(REDIS_HOST,127.0.0.1),port6379)app.route(/) def hello():redis.incr(hits)return f"Hello Container W…

nexus5x 刷机root

刷机 进入fastboot模式 adb reboot bootloader 或者开机 音量减 解锁bootloader fastboot oem unlock 刷入rom包 下载 Nexus 和 Pixel 设备的出厂映像 | Google Play services | Google for Developers 选一个合适的ROM包下载到电脑的某个位置,然后unzip解…

国家网信办发布第十三批境内区块链信息服务备案编号

2019年2月15日《区块链信息服务管理规定》(以下简称《管理规定》)正式实施以来,国家互联网信息办公室依法依规组织开展备案审核工作,已发布2批次共506个境内区块链信息服务名称及备案编号,近日正式发布第三批共224个境…

剪映怎么合并两个视频?几个步骤轻松搞定!

合并两个视频可以方便我们管理、节省存储空间、提高处理效率、满足特定要求或实现特定效果等目的。而剪映作为我们常用的视频处理软件,如何利用其合并两个视频呢?一起来看看吧~ 方法一:使用剪映专业版 1、运行剪映,主…

关于maven项目中依赖无法下载的解决方案

场景描述 在下载selenium的依赖时,虽然相依的jar包已经存在,但是在idea中依然报红 解决方案 在jar无法正常下载时可以尝试使用——找到下载的文件夹,删除整个文件夹后重新通过链接下载 过程演示 C:\Users\lenovo\.m2 所有依赖的jar包都在这…

errno变量和显示错误信息

一、errno Linux很多函数发生错误,只会返回-1。所以,我们只知道函数发生了错误,却不知道具体发生了什么错误。 因此Linux 系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型。 发生错误时,对…

CTF-Crypto学习记录-第三天 MD5加密算法(信息摘要算法)“ “

文章目录 0x1 MD5 基本介绍0x2 MD5 加密特点0x3 MD5 加密原理步骤0x01 对明文数据进行信息填充0x02 设置初始变量0x03 加密运算过程加密运算流程图&#xff1a;四个非线性函数&#xff1a;Mj表示消息的第j个子分组&#xff08;从0到15&#xff09;&#xff0c;<<&#xf…

Python web开发中的单元测试自动化技巧!

Python作为一种广泛使用的编程语言&#xff0c;在web开发中也扮演着重要的角色。在进行web开发时&#xff0c;单元测试是一个不可或缺的环节。单元测试可以确保代码的正确性&#xff0c;并且能够在开发过程中快速发现问题&#xff0c;有助于提高代码质量和开发效率。 在Python…