在 Python 中诅咒命令行应用程序

Curses Command Line Application in Python

我正在编写一个命令行控制台应用程序,它接收用户的输入并将其解释为命令并执行必要的操作(如 metasploit 控制台)。我的应用程序已经完成并准备就绪,但我的问题是我使用不处理箭头键的 input() 函数实现了它。如果我输错了一些东西而没有注意到它,我必须删除每个字符回到那个错字并重新输入命令的其余部分。我想以一种接受箭头键在字符周围导航的方式来实现它。有谁知道怎么做吗?

(正如我在上面指定的那样,我正在尝试找到一种方法来使用 curses 库来做到这一点。但是任何其他可以满足我需要的库都将受到高度赞赏)

代码示例:

while True:
    command = input("command >")

    if command == "say_hello":
        print("Hello")
    elif command == "exit":
        exit()
    else:
        print("Undefined command")

尝试使用 Python 的内置 cmd library。您将子 class cmd.Cmd 然后为每个您想要识别的命令编写 do_* 方法:

import cmd

class SimpleAppShell(cmd.Cmd):
    """A simple example of Python's Cmd library."""
    
    prompt = "command > "

    def do_say_hello(self, arg):
        print("Hello")

    def do_exit(self, arg):
        print("Goodbye")
        exit()


if __name__ == "__main__":
    SimpleAppShell().cmdloop()

因为 cmd.Cmd 默认使用 readline library (the Python interface to GNU Readline), you'll get the ability to move the cursor around and edit the line input by default, as well as a whole bunch of other helpful behavior out-of-the-box. See this PyMOTW post 以获得更多信息和示例。