探索 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'])
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。
- ››探索 ConcurrentHashMap 高并发性的实现机制
- ››探索Asp.net mvc 的文件上传(由浅入深)
- ››探索博客发展之路:给博客一个明确的定位
- ››部分 WM6.5 手机有望升级到 Windows Phone 7
- ››探索 Eclipse JDT 中的重构功能
- ››探索 Eclipse 的 Ajax Toolkit Framework
- ››探索 Eclipse V3.1 的新特性:更高的可用性、更广...
- ››探索 Flex 和 CSS 的强大功能
- ››探索 Pexpect,第 1 部分:剖析 Pexpect
- ››探索 Pexpect,第 2 部分:Pexpect 的实例分析
- ››部分英特尔芯片不支持Windows 7“XP模式”
- ››探索 AIX 6:在 AIX 6 上配置 iSCSI Target
更多精彩
赞助商链接