CMD 自动补全功能不正常
(Python 3.3.4)
我现在正在用cmd模块来开发一个应用程序,但不知道为什么,自动补全功能总是不能正常工作。每次我按下tab
键时,它只会把我的输入字符串缩进而已!!
比如说,如果我输入的是这样:
(MyShell)>> ta«光标在这里»
我按一下«tab»键,结果变成了:
(MyShell)>> ta «光标在这里»
我在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
有关。我尝试导入它,但显然我没有这个模块。
2 个回答
1
我正在用Python写一个交互式的命令行应用,为了让它能自动补全,你需要安装pyreadline,因为readline模块只适用于Unix系统。
如果你不知道怎么安装,只需执行以下命令:
pip install pyreadline
5
如果你遇到这个问题,可以试试这个方法。
首先,打开“运行”窗口,然后输入regedit。
接着,找到这个路径:LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor。
在这里,把PathCompletionChar的值改成9。通常这个值是40,这意味着你现在的自动补全键不是TAB键。修改完值后,关闭这个窗口,然后重启命令提示符(CMD)。
这样就解决了。现在你可以用TAB键正常进行路径的自动补全了。