没有调用python cmd completedefault()方法

时间:2014-03-28 20:53:46

标签: python python-2.7

考虑以下Python 2.7脚本:

#!/usr/bin/python

import cmd

class T(cmd.Cmd):
    def completedefault(self, *a):
        print 'completedefault called'
        return []

t=T()
t.cmdloop()

当我期待:

我在shell中输入一个字符,然后点击tab,我希望看到“已完成故障”打印。

实际发生的事情:

我在shell中键入一个字符,然后点击tab,没有任何反应。

使用Python 2.7.3进行测试。

1 个答案:

答案 0 :(得分:3)

在输入一个没有completedefault - 方法的命令后,调用

complete_<commandname>来完成输入行

试试这个:

#!/usr/bin/python

import cmd

class T(cmd.Cmd):
    def completedefault(self, *a):
        print 'completedefault called'
        return []

    def test(self, *args):
        print "test args: ", args

t=T()
t.cmdloop()

现在输入test [空格]并按Tab键,现在应执行completedefault

如果要控制命令名称的完成,可以使用completenames执行此操作,而不是completedefault