Python的Cmd模块的简易运用学习
昨天大佬阿炳给发了一份代码给我,看着感觉很好玩,这是自己写了个命令行吗,完了我就找篇更详细一点的博客学习了一下
cmd的主要方法和属性
方法:
- (1)cmdloop():类似与Tkinter的mainloop,运行Cmd解析器;
- (2)onecmd(str):读取输入,并进行处理,通常不需要重载该函数,而是使用更加具体的do_command来执行特定的命令;
- (3)emptyline():当输入空行时调用该方法;
- (4)default(line):当无法识别输入的command时调用该方法;
- (5)completedefault(text,line,begidx,endidx):如果不存在针对的complete_*()方法,那么会调用该函数,该函数主要是用于tab补充,且只能在linux下使用。
- (6)precmd(line):命令line解析之前被调用该方法;
- (7)postcmd(stop,line):命令line解析之后被调用该方法;
- (8)preloop():cmdloop()运行之前调用该方法;
- (9)postloop():cmdloop()退出之后调用该方法;
- (10)help_command():对command命令的说明,其中command为可变字符
属性:
- (1)prompt:交互式提示字符,也就是刚才的(Cmd)可以换成我们自己想要的字符
- (2)intro:在进入交互式shell前输出的字符串,可以认定为标志语之类的。其实这个可以在preloop方法输出也是一样的
代码:
在阿炳写的代码的基础上根据上面那篇参考博客增加了一点代码,让自己更清除的理解
注意以do_和help_开头的函数的作用(do_ * 开头为命令,执行的名令,以help_ * 开头的为帮助,对应命令的帮助说明)
from cmd import Cmd class BingCmd(Cmd): """just try try""" prompt = "BingCmd>" intro = "Welcome to BingCMD" # 在cmd.Cmd派生类中,以do_ * 开头为命令,以help_ * 开头的为帮助 def print_log(self, argv): print("la la la ") def do_bing(self, argv): self.print_log(argv) def help_bing(self): print("just print la la la") def do_hu(self, argv): print("调用hu功能") def help_hu(self): print("输出hu") def do_exit(self, argv): # 处理方法返回True,则直接退出循环。 print("exit()") return True def help_exit(self): print("用来退出") def preloop(self): print("cmdloop()运行之前调用该方法") def postloop(self): print("cmdloop()退出之后调用该方法") if __name__ == "__main__": BingCmd().cmdloop()
运行使用截图:
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16