如何创建一个接受命令的控制台应用程序?

时间:2015-03-21 15:28:49

标签: python python-3.x console-application

我对Python和编程相对较新。我正在编写一个控制台应用程序。

如何编写一个接受终端命令的控制台应用程序?例如,就像终端本身如何接受命令并执行相应的任务一样。 “命令”实际上只是在用户调用的应用程序中起作用吗?控制台界面本身只是一个功能吗?例如。 :

def console_interface():
    user_input = input()
    if user_input == "some_function":
        some_function()

    if user_input == "some_other_function":
        some_other_function()

虽然效率不高,但我知道上面的工作,因为我已经测试了它。这个一般性的想法是正确的还是没有用?

1 个答案:

答案 0 :(得分:4)

Python的标准库提供了一个模块,它完全封装了接受命令的"控制台应用程序"功能:请参阅https://docs.python.org/3/library/cmd.html

在该模块中,命令实际上是您的类的方法,通过命名约定将cmd.Cmddo_thisdo_that等子类化。 https://docs.python.org/3/library/cmd.html#cmd-example的示例是一个丰富的控制台接受命令"对于龟图形,所以你可以玩它。

在教学上,您可能希望从http://pymotw.com/2/cmd/给出的更为简单的示例开始 - 这就是Python 2,但功能大致相同。优秀的一系列示例需要稍微适应Python 3中的运行,但它不应该太难。

例如,考虑第一个:

import cmd

class HelloWorld(cmd.Cmd):
    """Simple command processor example."""

    def do_greet(self, line):
        print "hello"

    def do_EOF(self, line):
        return True

if __name__ == '__main__':
    HelloWorld().cmdloop()

当用户终止标准输入(Unix上的control-D)时会发生do_EOF;正如https://docs.python.org/3/library/cmd.html#cmd.Cmd.cmdloop所说,

An end-of-file on input is passed back as the string 'EOF'.

(在这种情况下,return True终止程序。)

在Python 2而不是3中,你唯一需要改变才能运行它是一行:

        print "hello"

必须成为

        print("hello")

因为print是Python 2中的一个语句,现在是Python 3中的一个函数。

我发现http://www.opensource.apple.com/source/python/python-3/python/Lib/cmd.pycmd.py来源也非常有启发性,我建议将它们作为对#34;调度" ...!