对于我想要添加命令行实用程序接口的程序,我有一个命令行解释器(或cmd
模块的python docs中的“面向行的命令解释器”)。
例如,现在会话如下所示:( %
表示shell提示,:)
是我的自定义提示)
% tasks
(调用命令行解释器)
:) clockHours Teaching_Sara_to_coregister_T1_to_T2
:) exit
另外,我想要这个界面:
% tasks clockHours Teaching_Sara_to_coregister_T1_to_T2
我设想在命令行实用程序中映射到子命令的自定义解释器命令。是否存在共同完成这些工作的库?如果不必两次编写完成代码,两次命令结构代码等等,那将是很好的。如果不是,如果我尝试实现这种行为,或者对它有多大用处的想法,我会给你什么建议?
显然我失去了简单临时变量的优势,这就是我开始使用解释器方法的原因,但是我的许多自定义解释器命令不依赖于这种行为,或者可以很容易地修改而不需要它 - 它是我想要命令行实用程序子命令的子集。
答案 0 :(得分:1)
cmd
模块可能足以满足您的需求。
您的最终解决方案可能接近以下示例:
import cmd
import sys
class MyCmd(cmd.Cmd):
def do_hello(self, line):
print "hello"
def do_exit(self, line):
return True
if __name__ == '__main__':
my_cmd = MyCmd()
if len(sys.argv) > 1:
my_cmd.onecmd(' '.join(sys.argv[1:]))
else:
my_cmd.cmdloop()
给出这种行为:
C:\_work\home>jython cmdsample.py hello
hello
C:\_work\home>jython cmdsample.py
(Cmd) hello
hello
(Cmd) exit
C:\_work\home>
答案 1 :(得分:1)
您可能会觉得有用的另一件事是cmdln模块。