(Python 3.3.4)
我目前正在使用cmd模块来构建应用程序,但由于某种原因,我无法完成正常工作。每当我点击tab
时,它只是缩进我的输入字符串!!
所以,如果我有这样的事情:
(MyShell)>> ta«cursor here»
我点击«tab»得到这个:
(MyShell)>> ta «cursor here»
我曾尝试过IDLE,Windows Power Shell和Python解释器本身,我猜... 命令的完成和参数的完成都不起作用!!
代码是这样的:
class MyShell(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
self.intro = "Welcome to MyShell test.\nPowered by Rodrigo Serrão"
self.prompt = "(MyShell)>>"
def do_talk(self, text):
print("Hello")
stuff = ["blabla", "bananas!", "noodles"]
def complete_talk(self, text, line, s, e):
if text:
return [i for i in stuff if i.startswith(text)]
else:
return stuff
MyShell().cmdloop()
我已经阅读了一些有关此问题,包括以下问题: Python Cmd Tab Completion Problems
它可能与readline
事件有关。我试图导入它,但显然我没有它。
答案 0 :(得分:0)
所以我也在Python上编写一个交互式shell应用程序,以便自动完成工作,安装 pyreadline , readline 模块是特定于Unix的。
如果您不知道如何安装,只需执行以下行:
pip 安装 pyreadline
答案 1 :(得分:0)
如果您检查此方法有问题,
运行并输入regedit。
转到LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor。
并将 PathCompletionChar 值更改为9。通常为40。这意味着您当前的自动完成键是 not TAB键。分配值9后,关闭窗口并重新启动CMD。
现在,此问题将得到解决。通过TAB键可以自动完成路径。