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

運行使用截圖:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM