python - 你如何制作一个接受命令的控制台应用程序?

标签 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()

虽然效率不高,但我知道上面的方法是有效的,因为我已经测试过了。这个总体想法是正确的还是有偏差?

最佳答案

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

在该模块中,命令实际上是您的类的方法cmd.Cmd 的子类:do_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()

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

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

(在这种情况下,返回 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.py 找到了 cmd.py 源代码也很有启发性,我建议将它们作为对"dispatch"世界的介绍来学习......!

关于python - 你如何制作一个接受命令的控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29184464/

相关文章:

python - 使用默认参数将特定参数传递给 Boost Python 函数

c# - 系统还原状态检查

使用可配置文本编辑器的 Python raw_input() 替换

python - 如何在 scikit-learn 中使用 SGDRegressor

python - 在 python shell 中导入 pyspark

python - 字典条目被覆盖?

python-3.x - 所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?

python - 调用 object.method() 和 Class.method(object) 时幕后发生了什么?

php - "X"参数不存在

c# - File.Exists 无法在网络驱动器上工作