我正在尝试使用以下代码运行这个简单的代码:
从pip
安装的pyreadlineclass 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'自动完成。所以它似乎与自动完成是否有多个匹配有关。
有人有解释或知道如何解决这个问题吗?
谢谢!
编辑:删除了剩余的短语。
答案 0 :(得分:0)
好的,我想通了。 pyreadlineconfig.ini文件位于错误的目录中。
我按照Ambiguous tab completion not working in iPython on Windows
中的修正操作表示将此文件复制到%HOMEPATH%。原来这个环境变量在我的电脑上配置错误,文件被复制到e:\ pyreadlineconfig.ini。
正确的路径,但应该是c:\ users \ username。