Python readline,使用Cmd接口完成制表选项

Python readline,使用Cmd接口完成制表选项,第1张

概述我在 Python中使用cmd.Cmd类为我的程序提供了一个简单的readline接口. 自包含的例子: from cmd import Cmdclass CommandParser(Cmd): def do_x(self, line): pass def do_xy(self, line): pass def do_xyz(sel 我在 Python中使用cmd.Cmd类为我的程序提供了一个简单的readline接口.

自包含的例子:

from cmd import Cmdclass CommandParser(Cmd):    def do_x(self,line):        pass    def do_xy(self,line):        pass    def do_xyz(self,line):        passif __name__ == "__main__":    parser = CommandParser()    parser.cmdloop()

按两次选项卡将显示可能性.再次按下标签也是如此.

我的问题是,如何在第三个标签按下循环选项?在readline术语中我认为这称为Tab:menu-complete,但我看不到如何将它应用于Cmd实例.

我已经尝试过:

readline.parse_and_bind('Tab: menu-complete')

在实例化解析器实例之前和之后.没运气.

我还尝试将“Tab:menu-complete”传递给Cmd构造函数.在这里也没有运气.

有谁知道它是如何完成的?

干杯!

解决方法 最简单的技巧是在菜单完成后添加一个空格:

parser = CommandParser(completekey="tab: menu-complete ")

执行的绑定表达式

readline.parse_and_bind(self.completekey+": complete")

然后会成为

readline.parse_and_bind("tab: menu-complete : complete")

第二个空格后的所有内容都被实际忽略,因此它与tab相同:menu-complete.

如果你不想依赖于readline解析的行为(我没有看到它的文档记录),你可以使用str的子类,拒绝扩展为completekey:

class stubborn_str(str):    def __add__(self,other):        return selfparser = CommandParser(completekey=stubborn_str("tab: menu-complete"))

self.completekey“:complete”现在与self.completekey相同.

总结

以上是内存溢出为你收集整理的Python readline,使用Cmd接口完成制表选项全部内容,希望文章能够帮你解决Python readline,使用Cmd接口完成制表选项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1197125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存