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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试 —— Jmeter 常用三种定时器!

1、同步定时器 位置:HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行…

k8s客户端配置

K8s客户端安装 前提 K8s服务部署成功,如下 角色 IP地址 操作系统 主机名 Kubernetes版本 master节点 172.16.4.167 CentOS 7.9 k8s-master01 v1.28.2 工作节点1 172.16.4.168 CentOS 7.9 k8s-worker01 v1.28.2 工作节点2 172.16.4.169 CentOS 7.9…

竞赛选题 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习?5.1.2 为什么要迁移学习? 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

2.7每日一题(分段函数不定积分)

1、分段函数不定积分是分段做,但分段得出原函数后必须写成C1,C2,C3;(直接全部写成C是错误的) 2、又因为原函数可导,可导必连续,所以根据原函数在分界点的连续性找到C1,C…

吃豆人C语言开发—Day2 需求分析 流程图 原型图

目录 需求分析 流程图 原型图 主菜单: 设置界面: 地图选择: 游戏界面: 收集完成提示: 游戏胜利界面: 游戏失败界面 死亡提示: 这个项目是我和朋友们一起开发的,在此声明一下…

Qt 窗口的尺寸

本文通过多个案例,详细说明关于Qt窗体尺寸的一些重要问题 默认尺寸 对于一个Qt的窗口(继承于QWidget),获取其窗体尺寸的方法size(); 以一个Qt创建Qt Widgets Application项目的默认生成代码为基础,做如下…

实现基于 Jenkins 的多服务器打包方案

实现基于 Jenkins 的多服务器打包方案 在实际项目中,我们经常会遇到需要将一个应用程序或服务部署到不同的服务器上的需求。而使用 Jenkins 可以很方便地自动化这个过程。 设置参数 首先,我们需要设置一些参数,以便在构建过程中指定要部署…

Element UI + Vue 新增和编辑共用表单校验无法清除问题(已解决)

问题描述 在新增和编辑过程中大部分情况下 两个表单是一致的,而且编辑也有回显需要,所有绝大多数情况下 都是一个表单两个用处,但是随之而来出现了一个无法清除校验的问题,在先点击编辑后再点击新增会出现校验红字: …

防止消息丢失与消息重复——Kafka可靠性分析及优化实践

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 防止消息丢失与消息重复——Kafka可…

【Linux】进程优先级|进程并发概念|在vim中批量化注释

文章目录 前言tips——如何在vim中批量化注释进程更深度理解一、什么是进程优先级二、 为什么要有优先级三、Linux怎么设置优先级查看进程优先级的命令PRI and NI用top命令更改已存在进程的nice: 如何根据优先级开展调度呢?五、其他概念并发(…

css四种导入方式

1 行内样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <h1 style"color: blue">我是标题</h1> </body> </htm…

【Objective-C】浅析Block及其捕获机制

目录 Block的基本使用Block的声明Block的实现Block的调用 Block作为形参使用Block作为属性使用给Block起别名Block的copy Block的捕获机制auto类型的局部变量__block浅析static类型的局部变量全局变量 其他问题 Block的基本使用 什么是Block&#xff1f; Block &#xff08;块…

超市商品管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

项目下载地址 目录 项目下载地址 一、摘要1.1 简介1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 超市区域模块2.3 超市货架模块2.4 商品类型模块2.5 商品档案模块 三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4…

【嵌入式开发学习】__单片机中容易造成内存泄露的几个痛点

目录 前言 一、程序运行 二、什么是内存泄露&#xff1f; 三、内存泄露的严重后果&#xff01; 四、如何定位到泄露的要点&#xff1f; 五、三大痛点 1. 访问越界 2. 栈 3. 堆 六、泄露常见的场景 1. 重新赋值 2. 首先释放父块 3. 返回值的不正确处理 七、常见的…

Azure - 机器学习:创建机器学习所需资源,配置工作区

目录 一、Azure机器学习工作区与计算实例简要介绍工作区计算实例 二、创建工作区1. 登录到 Azure 机器学习工作室2. 选择“创建工作区”3. 提供以下信息来配置新工作区&#xff1a;4. 选择“创建”以创建工作区 三、创建计算实例四、工作室实战4.1 工作室快速导览4.2 从示例笔记…

常用linux命令 linux_cmd_sheet

查看文件大小 ls -al 显示每个文件的kb大小 查看系统日志 dmesg -T | tail 在 top 命令中&#xff0c;RES 和 VIRT&#xff08;或者 total-vm&#xff09;是用来表示进程内存使用的两个不同指标&#xff0c;它们之间有以下区别&#xff1a; RES&#xff08;Resident Set Size…

TWAS模型数据*.wgt.RDat查看及导入R

TWAS模型数据*.wgt.RDat查看及导入R 1 数据导入R load(“./SLC7A8.wgt.RDat”) as.data.frame(snps) -> snp snp %>% head()V1 V2 V3 V4 V5 V6 1 12 rs10747759 0 55683634 C T 2 12 rs2293409 0 55684180 A C 3 12 rs1048103 0 55684405 C …

Pytorch代码入门学习之分类任务(二):定义数据集

一、导包 import torch import torchvision import torchvision.transforms as transforms 二、下载数据集 2.1 代码展示 # 定义数据加载进来后的初始化操作&#xff1a; transform transforms.Compose([# 张量转换&#xff1a;transforms.ToTensor(),# 归一化操作&#x…

FLStudio2024汉化破解版在哪可以下载?

水果音乐制作软件FLStudio是一款功能强大的音乐创作软件,全名:Fruity Loops Studio。水果音乐制作软件FLStudio内含教程、软件、素材,是一个完整的软件音乐制作环境或数字音频工作站... FL Studio21简称FL 21&#xff0c;全称 Fruity Loops Studio 21&#xff0c;因此国人习惯叫…

图像数据噪音种类以及Python生成对应噪音

前言 当涉及到图像处理和计算机视觉任务时&#xff0c;噪音是一个不可忽视的因素。噪音可以由多种因素引起&#xff0c;如传感器误差、通信干扰、环境光线变化等。这些噪音会导致图像质量下降&#xff0c;从而影响到后续的图像分析和处理过程。因此&#xff0c;对于从图像中获…