探索 Pexpect,第 1 部分:剖析 Pexpect
2009-08-29 00:00:00 来源:WEB开发网函数 run 可以用来运行命令,其作用与 Python os 模块中 system() 函数相似。run() 是通过 Pexpect 类实现的。
如果命令的路径没有完全给出,则 run 会使用 which 命令尝试搜索命令的路径 。
清单 2. 使用 run()执行 svn 命令
from pexpect import *
run ("svn ci -m 'automatic commit' my_file.py")
与 os.system() 不同的是,使用 run() 可以方便地同时获得命令的输出结果与命令的退出状态 。
清单 3. run() 的返回值
from pexpect import *
(command_output, exitstatus) = run ('ls -l /bin', withexitstatus=1)
command_out 中保存的就是 /bin 目录下的内容。
Pexpect 提供的 spawn() 类:
使用 Pexpect 启动子程序
清单 4. spawn 的构造函数
class spawn:
def __init__(self,command,args=[],timeout=30,maxread=2000,\
searchwindowsize=None, logfile=None, cwd=None, env=None)
spawn是Pexpect模块主要的类,用以实现启动子程序,它有丰富的方法与子程序交互从而实现用户对子程序的控制。它主要使用 pty.fork() 生成子进程,并调用 exec() 系列函数执行 command 参数的内容。
可以这样使用:
清单 5. spawn() 使用示例
child = pexpect.spawn ('/usr/bin/ftp') #执行ftp客户端命令
child = pexpect.spawn ('/usr/bin/ssh user@example.com') #使用ssh登录目标机器
child = pexpect.spawn ('ls -latr /tmp') #显示 /tmp目录内容
- ››探索 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
更多精彩
赞助商链接