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()

运行使用截图:

原文地址:https://www.cnblogs.com/dong973711/p/11989819.html