如何在使用cmd模块实现的面向行的命令解释器中为命令创建别名?
要创建命令,我必须实现do_cmd方法.但我有长名称(如约束)的命令,我想为这些命令(如co)提供别名(实际上是快捷方式).我怎样才能做到这一点?
我想到的一种可能性是实现do_alias(如do_co)方法,并在此方法中调用do_cmd(do_constraint).但是这在CLI的帮助下给我带来了新的命令.
解决方法
您可以覆盖
default
方法并搜索合适的命令处理程序(如
Brian所示):
import cmd class WithAliasCmd(cmd.Cmd): def default(self,line): cmd,arg,line = self.parseline(line) func = [getattr(self,n) for n in self.get_names() if n.startswith('do_' + cmd)] if func: # maybe check if exactly one or more elements,and tell the user func[0](arg)