使用Python的Cmd.cmd完成选项卡

时间:2009-12-21 23:15:02

标签: autocomplete python-3.x tab-completion

在python中使用Cmd.cmd框架测试一段时间后,我注意到一个问题,我不知道该怎么做。另外我相信在几个小时之前就可以使用它(或者我只是疯了),所以这更奇怪。

我有以下示例代码,在Windows和Linux系统上都经过测试(因此它不是Windows问题),但是标签完成根本不起作用。

如果我在Python 2中使用完全相同的代码,它可以在Linux系统上运行(但不能在Windows上运行)

import cmd
class Shell ( cmd.Cmd ):    
    def do_test ( self, params ):
        print( 'test: ' + params )

    def do_exit ( self, params ):
        return True

    def do_quit ( self, params ):
        return True

if __name__ == '__main__':
    x = Shell()
    x.cmdloop()

你知道为什么会发生这种情况,或者我能做些什么来使标签完成成为可能?

3 个答案:

答案 0 :(得分:5)

它实际上适用于Linux上的Python 2和3。但是,我的python设置是使用readline支持编译的,这是cmd documentation所需的自动化所必需的。我怀疑你的Linux Python 3没有用它编译。

不幸的是,readline是特定于Unix的。有关Windows上其他选项的讨论,请参阅python tab completion in windows

答案 1 :(得分:4)

我从这里https://pypi.python.org/pypi/pyreadline/2.0

安装了pyreadline模块后,我开始在windows上工作了

答案 2 :(得分:0)

在Mac上有Stand-alone GNU readline module 你可以使用pip install gnureadline获得它 它已经过Python 2.6,2.7,3.2和3.3的测试。