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

时间: 2024-11-08 23:51:43

Python的Cmd模块的简易运用学习的相关文章

Python使用cmd模块构造命令行界面

最近做测试工具,实在懒得搞GUI,然后意识到python自带一个模块叫cmd,用了用发现简直是救星.默认cmd模块中的Cmd类会使用rawinput来处理提示符显示和输入信息获取的工作,但是特定情况下会有个问题: 当交互线程等待用户输入指令的时候,如果希望另外一些后台线程可以打印信息到前台显示的话…… 打印当然是打印出来了,但只要开始输入新的指令,这些打印信息就都被清除掉了,只剩下提示符和新的输入.如果想实时看什么东西的话…… 反复尝试和阅读cmd模块源码以后发现,Cmd类在实例化的时候,默认会

python之web模块学习-- urllib

准备写一些列的 python之web模块学习,基本上涉及常用的的web模块,包括 urllib.urllib2.httplib.urlparse.requests,现在,开始我们的第一个模块的学习吧. 1  urllib简介 python urllib 模块提供了一个从指定的URL地址获取网页数据,然后对其进行分析处理,获取我们想要的数据. 2  常用方法 2.1  urlopen  -- 创建一个类文件对象 为读取指定的URL help(urllib.urlopen) urlopen(url,

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

python之web模块学习-- urllib2

下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块. 1  urllib2 简介 urllib2是python自带的一个访问网页及本地文件的库. 与urllib相比,显著区别之处在于: 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) urllib提供urlencode方法用来encode发送的da

python之web模块学习-- urlparse

继续学习python的web模块,urlparse 是一个比较简单的模块,主要是用来 解析URL字符串的 1  urlparse简介 python使用urlparse来解析URL字符串 主要方法: urlprase 次要方法: urljoin urlsplit  urlunsplit等 2  urlparse详解 urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse

python之cmd库学习

一:cmd介绍 引用python的官方文档 The cmd class provides a simple framework for writing line-oriented command interpreters.  These are often useful for test harnesses, administrative tools, and prototypes that will later be wrapped in a more sophisticated interf

python cmd库的简易使用

简单记录一下,竟然这么简单的方法就能在 python 里面实现一个简单的交互式命令行以前从来没有尝试过. 上一个完整的例子: import cmd import osimport readline readline.parse_and_bind('tab: complete') class CLI(cmd.Cmd): def __init__(self): cmd.Cmd.__init__(self) self.prompt = "Miller2 > " # define com

Python随机数random模块学习,并实现生成6位验证码

一.前言 学习python随机数random模块的使用 ,并使用模块中的函数,实现6位验证码生成 二.random模块 1.random.random() 返回0-1直接的随机数,类型为float >>>print(random.random()) 0.1259184691662908 2.random.randint(1, 8) 返回1-8直接的随机数,包括8 >>>print(random.randint(1, 8)) 3 3.random.choice() 从一个

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并