WEB开发网
开发学院软件开发Python 探索 Pexpect,第 1 部分:剖析 Pexpect 阅读

探索 Pexpect,第 1 部分:剖析 Pexpect

 2009-08-29 00:00:00 来源:WEB开发网   
核心提示: 当子程序需要参数时,还可以使用一个参数的列表:清单 6. 参数列表示例child=pexpect.spawn('/usr/bin/ftp',[])child=pexpect.spawn('/usr/bin/ssh',['user@example.com&#

当子程序需要参数时,还可以使用一个参数的列表:

清单 6. 参数列表示例

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

在构造函数中,maxread 属性指定了 Pexpect 对象试图从 tty 一次读取的最大字节数,它的默认值是2000字节 。

由于需要实现不断匹配子程序输出, searchwindowsize 指定了从输入缓冲区中进行模式匹配的位置,默认从开始匹配。

logfile 参数指定了 Pexpect 产生的日志的记录位置。

例如:

清单 7. 记录日志

child = pexpect.spawn('some_command') 
fout = file('mylog.txt','w') 
child.logfile = fout 

还可以将日志指向标准输出:

清单 8. 将日志指向标准输出

child = pexpect.spawn('some_command') 
child.logfile = sys.stdout 

如果不需要记录向子程序输入的日志,只记录子程序的输出,可以使用:

清单 9. 记录输出日志

child = pexpect.spawn('some_command') 
child.logfile_send = sys.stdout 

使用 Pexpect 控制子程序

为了控制子程序,等待子程序产生特定输出,做出特定的响应,可以使用 expect 方法。

清单 10. expect() 定义

expect(self, pattern, timeout=-1, searchwindowsize=None) 

在参数中: pattern 可以是正则表达式, pexpect.EOF , pexpect.TIMEOUT ,或者由这些元素组成的列表。需要注意的是,当 pattern 的类型是一个列表时,且子程序输出结果中不止一个被匹配成功,则匹配返回的结果是缓冲区中最先出现的那个元素,或者是列表中最左边的元素。使用 timeout 可以指定等待结果的超时时间 ,该时间以秒为单位。当超过预订时间时, expect 匹配到pexpect.TIMEOUT。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:探索 Pexpect 部分

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接