如何用Python包装CLI程序(保持交互性)?

如何用Python包装CLI程序(保持交互性)?,python,select,wrapper,command-line-interface,interactive,Python,Select,Wrapper,Command Line Interface,Interactive,我想为交互式CLI程序(Asterisk CLI)编写一个包装器 基本上,我需要保持与CLI的交互(包括制表符完成),但我想过滤Asterisk的输出,以便只显示与给定模式匹配的行 我尝试了一种基于select()的方法,使用popen.popen4,并在read_fs中添加星号stdout_和_stderr以及sys.stdin,但它有点不起作用 谁能给我一些好的建议吗 非常感谢, AndreaPexpect可能对您有用: 网页描述:“Pexpect是一个Python模块,用于生成子应用程序;

我想为交互式CLI程序(Asterisk CLI)编写一个包装器

基本上,我需要保持与CLI的交互(包括制表符完成),但我想过滤Asterisk的输出,以便只显示与给定模式匹配的行

我尝试了一种基于select()的方法,使用popen.popen4,并在read_fs中添加星号stdout_和_stderr以及sys.stdin,但它有点不起作用

谁能给我一些好的建议吗

非常感谢,
Andrea

Pexpect可能对您有用:

网页描述:“Pexpect是一个Python模块,用于生成子应用程序;控制它们;并响应其输出中的预期模式。Pexpect可用于自动化交互式应用程序,如ssh、ftp、passwd、telnet等。Pexpect是纯Python。”

导言

Python Asterisk包(代号为py Asterisk)试图为Asterisk Manager API生成高质量的、有良好文档记录的Python绑定

该包的最终目标是允许在Python中对星号配置进行丰富的规范,而不是在我们称之为星号配置文件的奇怪的、无结构的、未记录的混乱中

工作功能

实现manager客户端和事件调度器的Python包。
manager API面向用户的命令行界面。

“有点不起作用”。那没用。什么不起作用?你有什么问题?如果你想要一个具体的答案,请问一个具体的问题。详细说明。
pexpect
将修复OP一直存在的所有恼人的缓冲问题,并将是我解决此问题的选择。