CMD自动完成无法正常工作

时间:2014-04-06 14:41:07

标签: python python-3.x autocomplete

(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事件有关。我试图导入它,但显然我没有它。

2 个答案:

答案 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键可以自动完成路径。