我对 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_this
、do_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/