代码之家  ›  专栏  ›  技术社区  ›  poke

用python的cmd.cmd完成选项卡

  •  6
  • poke  · 技术社区  · 15 年前

    在用python中的cmd.cmd框架测试了一段时间后,我发现了一个我不知道该怎么做的问题。另外,我相信在几个小时前(或者我只是疯了),这就更奇怪了。

    我有下面的示例代码,在Windows和Linux系统上都进行了测试(所以这不是Windows的问题),但是标签完成根本不起作用。

    如果我使用 完全相同 在python 2中,它在linux系统上工作(但在windows one上不工作)。

    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 回复  |  直到 9 年前
        1
  •  5
  •   Community CDub    8 年前

    它实际上对我在Linux上的python 2和3都有效。但是,我的python设置是用readline支持编译的,这是根据 cmd documentation . 我怀疑你的Linuxpython3不是用它编译的。

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

        2
  •  4
  •   hucqym    12 年前

    从这里安装Pyreadline模块后,我让它在Windows上工作 https://pypi.python.org/pypi/pyreadline/2.0

        3
  •  0
  •   luckydonald    9 年前

    在Mac上有 Stand-alone GNU readline module .
    你可以用它 pip install gnureadline .
    它已经用python 2.6、2.7、3.2和3.3进行了测试。