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

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

 2009-08-29 00:00:00 来源:WEB开发网   
核心提示: 清单 14. 打印 before 成员的内容child=pexpect.spawn('/bin/ls/')child.expect(pexpect.EOF)printchild.before此时 child.before 保存的就是在根目录下执行 ls 命令的结果,清单 15.

清单 14. 打印 before 成员的内容

child = pexpect.spawn('/bin/ls /') 
child.expect (pexpect.EOF) 
print child.before 

此时 child.before 保存的就是在根目录下执行 ls 命令的结果。

清单 15. send 系列函数

send(self, s) 
sendline(self, s='') 
sendcontrol(self, char) 

这些方法用来向子程序发送命令,模拟输入命令的行为。与 send() 不同的是 sendline() 会额外输入一个回车符 ,更加适合用来模拟对子程序进行输入命令的操作。当需要模拟发送 “Ctrl+c” 的行为时,还可以使用 sendcontrol() 发送控制字符。

清单 16. 发送 ctrl+c

child.sendcontrol('c') 

由于 send() 系列函数向子程序发送的命令会在终端显示,所以也会在子程序的输入缓冲区中出现,因此不建议使用 expect 匹配最近一次 sendline() 中包含的字符。否则可能会在造成不希望的匹配结果。

清单 17. interact() 定义

interact(self, escape_character = chr(29), input_filter = None, output_filter = None) 

Pexpect还可以调用interact() 让出控制权,用户可以继续当前的会话控制子程序。用户可以敲入特定的退出字符跳出,其默认值为“^]” 。

下面展示一个使用Pexpect和ftp交互的实例。

清单 18. ftp 交互的实例:

# This connects to the openbsd ftp site and 
# downloads the README file. 
import pexpect 
child = pexpect.spawn ('ftp ftp.openbsd.org') 
child.expect ('Name .*: ') 
child.sendline ('anonymous') 
child.expect ('Password:') 
child.sendline ('noah@example.com') 
child.expect ('ftp> ') 
child.sendline ('cd pub/OpenBSD') 
child.expect('ftp> ') 
child.sendline ('get README') 
child.expect('ftp> ') 
child.sendline ('bye') 

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

Tags:探索 Pexpect 部分

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