我对Python和编程相对较新。我正在编写一个控制台应用程序。
如何编写一个接受终端命令的控制台应用程序?例如,就像终端本身如何接受命令并执行相应的任务一样。 “命令”实际上只是在用户调用的应用程序中起作用吗?控制台界面本身只是一个功能吗?例如。 :
def console_interface():
user_input = input()
if user_input == "some_function":
some_function()
if user_input == "some_other_function":
some_other_function()
虽然效率不高,但我知道上面的工作,因为我已经测试了它。这个一般性的想法是正确的还是没有用?
答案 0 :(得分:4)
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()
当用户终止标准输入(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.py的cmd.py
来源也非常有启发性,我建议将它们作为对#34;调度" ...!