Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Autocomplete 使用Python'完成制表符;s Cmd.Cmd_Autocomplete_Python 3.x_Tab Completion - Fatal编程技术网

Autocomplete 使用Python'完成制表符;s Cmd.Cmd

Autocomplete 使用Python'完成制表符;s Cmd.Cmd,autocomplete,python-3.x,tab-completion,Autocomplete,Python 3.x,Tab Completion,在python中使用Cmd.Cmd框架测试了一段时间后,我注意到一个问题,我不知道该怎么办。另外,我相信在几个小时前就可以工作了(或者我只是疯了),所以这更奇怪 我有下面的示例代码,在Windows和Linux系统上都进行了测试(所以这不是Windows的问题),但是制表符完成根本不起作用 如果我在Python2中使用完全相同的代码,那么它在Linux系统上确实可以工作(但在Windows系统上却不行) 你知道为什么会发生这种情况,或者我能做些什么,使制表符完成成为可能吗?它实际上对我在Linu

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

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

如果我在Python2中使用完全相同的代码,那么它在Linux系统上确实可以工作(但在Windows系统上却不行)


你知道为什么会发生这种情况,或者我能做些什么,使制表符完成成为可能吗?

它实际上对我在Linux上的Python2和Python3都有效。但是,我的python安装程序是使用readline支持编译的,这是根据需要自动执行的。我怀疑你的LinuxPython3不是用它编译的


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

在Mac上安装pyreadline模块后,我让它在Windows上工作。

在Mac上有。
您可以通过
pip install gnureadline
获得它

它已经用Python2.6、2.7、3.2和3.3进行了测试

您在这里实现了完整的名称吗?
complete\u XY
函数用于完成参数(因此当我输入
test f
时,它可以为我提供
test foobar
),但是命令的完成是从所有可用的
do\u XY
函数自动生成的。另外,当我按tab键时,它只是将一个选项卡放到命令行中,而当没有兼容的完成时,就不会发生任何事情(因为函数返回一个空列表)。因此,在这种情况下,开发人员只能建议用户使用readline支持编译Python设置(除了执行自己版本的命令完成)?
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()