Cmd类型提供了一个创建命令行解析器的框架。简单的来说,可以继承Cmd来创建命令行界面,然后对所有想处理的命令command执行do_command方法。这个方法会接受命令行的其余部分作为自己的唯一参数。
比如,如果在命令行中输入:
say hello(2)onecmd(str):读取输入,并进行处理,通常不需要重载该函数,而是使用更加具体的do_command来执行特定的命名;
from cmd import Cmd import sys class Client(Cmd): prompt = '>' def __init__(self): Cmd.__init__(self) def onecmd(self,arg): print ('onecmd:',arg) if __name__ == '__main__': client = Client() client.cmdloop()运行结果:
>hello
onecmd: hello
>hello istar
onecmd: hello istar
>exit
onecmd: exit
>
(3)emptyline():当输入空行时调用该方法;
(4)default(line):当无法识别输入的command时调用该方法;
(5)completedefault(text,line,begidx,endidx):如果不存在针对的complete_*()方法,那么会调用该函数
(6)precmd(line):命令line解析之前被调用该方法;
(7)postcmd(stop,line):命令line解析之后被调用该方法;
(8)preloop():cmdloop()运行之前调用该方法;
(9)postloop():cmdloop()退出之后调用该方法;
*******************************************************************************************************
关于Cmd的使用,通常都是创建自己的类型,继承于CMd,然后使用Cmd的方法来实现自己的功能,一个超简单的例子:
from cmd import Cmd import sys class Client(Cmd): prompt = '>' def __init__(self): Cmd.__init__(self) def do_hello(self,arg): print ("do_hell0 :|",arg) def do_exit(self,arg): print (arg) sys.exit() do_EOF = do_exit if __name__ == '__main__': client = Client() client.cmdloop()运行结果:
>hello
do_hell0 :|
>hello istar
do_hell0 :| istar
>exit
转自:http://blog.sina.com.cn/s/blog_ac9fdc0b0101nd3d.html