pexpect(4.6.0)文档

pexpect是一个Python库,用于自动化交互式应用程序。它有两个主要接口:run()函数和spawn类。spawn更强大,可以启动子程序并与之交互,而run()适合快速执行命令。spawn通过发送输入并期待特定响应来控制子进程。它不解释shell元字符,如重定向和通配符。此外,pexpect提供了如spawn、run、expect、send等方法,以及处理异常、日志记录和控制SSH会话的工具。
摘要由CSDN通过智能技术生成

说明

文档参考(翻译)自官方文档(地址),加入了一些我在使用过程中的心得体会。简略了我认为不重要的内容。简略了我不懂的内容。水平有限,仅供参考。

API结构

  • Core pexpect components(核心组件)
    • spawn class
    • run function
    • Exceptions
  • Utility functions(小工具)
  • fdpexpect - use pexpect with a file descriptor
    • fdspawn class
  • popen_spawn - use pexpect with a piped subprocess
    • PopenSpawn class
  • replwrap - Control read-eval-print-loops
  • pxssh - control an SSH session
    • pxssh class

核心组件

pexpect有两个主要接口:函数run()和类spawn。类spawn更强大。run()比spawn类简单,适合快速调用程序。当调用run()时,它执行给定的程序,然后返回输出。这是对os.system()的一个方便的替换。
例如:

pexpect.run('ls-la')

spawn类是到pexpect系统的更强大的接口。您可以使用它来产生一个子程序,然后通过发送输入和期望响应(等待子程序输出中的模式)与它进行交互。

child = pexpect.spawn('scp foo user@example.com:.')
child.expect('Password:')//会阻塞,直到匹配到指定内容。
child.sendline(mypassword)

创建Spawn

构造方法

class pexpect.spawn(command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None, ignore_sighup=False, echo=True, preexec_fn=None, encoding=None, codec_errors='strict', dimensions=None, use_poll=False)

创建spawn举例:

child = pexpect.spawn('/usr/bin/ftp')
child = pexpect.spawn('/usr/bin/ssh user@example.com')
child = pexpect.spawn('ls -latr /tmp')

也可以这样:

child = pexpect.spawn('/usr/bin/ftp', [])
child = pexpect.spawn('/usr/bin/ssh', ['user@example.com'])
child = pexpect.spawn('ls', ['-latr', '/tmp'])

args
args=[] 是命令的参数。也可以直接写在命令里面

注意,pexpect不解释shell元字符,例如重定向、管道或通配符(>、或*)。这是一个常见的错误。如果想运行一个命令并通过管道通过发送给另一个命令,那么还必须启动一个shell。例如:

child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > logs.txt"')
child.expect(pexpect.EOF)

第二种形式的spawn(传递参数列表args)可以使语法更加清晰。例如,以下内容与前一个示例等效:

shell_cmd = 'ls -l | grep LOG > logs.txt'
child = pexpect.spawn('/bin/bash', ['-c', shell_cmd])
child.expect(pexpect.EOF)

maxread
maxread属性设置读取缓冲区大小。这是pexpect一次尝试从tty读取的最大字节数。将maxread大小设置为1将关闭缓冲。与java等语言类似,缓冲功能可以提高io性能,此功能与SearchWindowsize结合使用非常有用。
searchwindowsize
当关键字参数searchwindowsize为none(默认值)时,将在每次接收传入数据的迭代中搜索整个缓冲区。这个字段可以提

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xpect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。 :)   Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl。   Expect工作原理 :   从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。   Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。例如下面的Chat脚本实现等待标准输出出现Login:字符串,然后发送somebody作为用户名;然后等待Password:提示符,并发出响应sillyme。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值