昨天大佬阿炳给发了一份代码给我,看着感觉很好玩,这是自己写了个命令行吗,完了我就找篇更详细一点的博客学习了一下

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

运行使用截图:

最新文章

  1. python基础编程
  2. 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
  3. 【hdu2795】Billboard
  4. 【Android测试】【第三节】ADB——源码浅谈
  5. Homework3
  6. TensorFlow深度学习笔记 文本与序列的深度模型
  7. Spring 从零開始-05
  8. linux命令学习-3-sysctl
  9. dubbox注解的一个坑
  10. WEB服务器如何选择 Apache or Nginx?
  11. PHP-无限级分类(迭代法创建)
  12. HyperLedger Fabric Introduction——区块链超级账本介绍
  13. 【JVM】-NO.113.JVM.1 -【JDK11 HashMap详解-4-resize()】
  14. ls(ll)排序问题
  15. scheme的split实现
  16. POJ 1151Atlantis 矩形面积并[线段树 离散化 扫描线]
  17. sql排序方法
  18. elasticsearch5.5
  19. LaTex 常见错误及解决办法
  20. Tornado之实例和扩展

热门文章

  1. 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
  2. GAN网络之入门教程(五)之基于条件cGAN动漫头像生成
  3. beego log
  4. php-ffmpeg 操作视频/音频文件
  5. Nexus 安装教程
  6. 修改apt,pip,npm为国内镜像源
  7. Linux用户和组管理命令-用户创建useradd
  8. MySQL历史
  9. Vue踩坑日记-You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file.
  10. Nacos配置中心使用