我正在尝试运行这个简单的代码:
- Python 2.7.2
- Windows 7的
从 pip 安装的 pyreadline
class HelloWorld(cmd.Cmd): """Simple command processor example.""" FRIENDS = [ 'Alice', 'Adam', 'Barbara', 'Bob', 'Chris' ] def do_greet(self, person): "Greet the person" if person and person in self.FRIENDS: greeting = 'hi, %s!' % person elif person: greeting = "hello, " + person else: greeting = 'hello' print greeting def complete_greet(self, text, line, begidx, endidx): if not text: completions = self.FRIENDS[:] else: completions = [ f for f in self.FRIENDS if f.startswith(text) ] return completions def do_EOF(self, line): return True if __name__ == '__main__': HelloWorld().cmdloop()
似乎自动完成不起作用。当我运行它并输入:
(Cmd) greet A<tab>
它没有给出自动补全建议,但应该给出“Alice Adam”。
但是,当我输入:
(Cmd) greet C<tab>
它正确地使用“Chris”自动完成。因此,这似乎与自动完成是否有多个匹配项有关。
有没有人有解释或知道如何解决这个问题?
谢谢!
编辑:删除了剩余的短语。