2009-10-17 54 views
3

我想为交互式CLI程序(Asterisk CLI)编写一个包装器。基本上,我需要保持与CLI的交互(包括tab-completion),但我想过滤Asterisk的输出,以便仅显示符合给定模式的行。如何在Python中包装CLI程序(保持交互性)?

我尝试了一个基于select()的方法,使用popen.popen4并将星号stdout_and_stderr和sys.stdin放在read_fs中,但它有点不起作用。

任何人都可以给我一些好的指针吗?

非常感谢, 安德烈

+0

“排序没有工作”。这没有帮助。什么没有用?你有什么问题?如果你想要一个特定的答案,请问一个具体的问题。细节。 – 2009-10-17 12:09:01

回答

6

Pexpect的可能对您有用:http://sourceforge.net/projects/pexpect/从网页

描述:“Pexpect的是产卵子应用的Python模块,控制他们,应对预期的模式在他们的输出中,Pexpect可以用于自动化交互式应用程序,例如ssh,ftp,passwd,telnet等.Pexpect是纯Python。“

+0

'pexpect'将解决OP一直存在的所有刺激性缓冲问题,并且将是我对这个问题的选择。 – 2009-10-17 12:37:29

0

http://code.google.com/p/py-asterisk/

介绍

Python的星号包(代号PY-星号)是生产高质量,有据可查Python绑定Asterisk的管理器API的尝试。

该软件包的最终目标是允许在Python中对Asterisk配置进行丰富的规范,而不是我们称之为Asterisk配置文件的古怪,非结构化,未记录的混乱。

工作功能

Python包实施管理客户端和事件调度。 面向管理员API的面向用户的命令行界面。