python之cmd库学习

发布时间:2019-09-15 10:01:33编辑:auto阅读(1974)


    一: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 interface

        cmd是一个提供一种基于面向命令行解释器编写程序的简单框架,这些通常用于测试工具,管理工具和稍后包裹在更加复杂的接口的原型非常有用。

    二:cmd的基本使用

        编写基于cmd的程序要注意以下几个点:

    1.要继承自cmd.Cmd类
    2.要先初始化父类
    3.所有的命令都是以do_开头
    4.所有的命令帮助都是以help_开头
    5.一个命令对应一个帮助,如果没有帮助执行错误命令会出错。


    三:cmd例子

        

    # -*- coding: utf-8 -*- 
    #!/usr/bin/python env
    
    #引入一些包
    import sys
    import cmd
    import os
    #继承cmd.Cmd类
    class Cli(cmd.Cmd):
            def __init__(self):
                    #先初始化父类
                    cmd.Cmd.__init__(self)
                    #设置命令行的提示符
                    self.prompt = "<zhang>"
    
        #第一个命令dir命令,带一个参数    
            def do_dir(self,arg):
                    if not arg:
                            self.help_dir()
                    elif os.path.exists(arg):
                            print "\n".join(os.listdir(arg))
                    else:
                            print "No such pathexists"
        #带第二个命令
            def do_quit(self,arg):
                    return True
        #dir命令的帮助
            def help_dir(self):
                    print "syntax:dir path -- displaya list of files and directories"
        #help命令的帮助
            def help_quit(self):
                    print "syntax:quit --terminatesthe application"
        #命令的别名
            do_q = do_quit
    
    if __name__ == "__main__":
    #开始执行cmd
            cli = Cli()
    #循环接受用户输入的命令
            cli.cmdloop()


    四:执行结果

    [root@work python]# python cmdtest.py 
    <zhang>dir
    syntax:dir path -- displaya list of files and directories
    <zhang>dir /tmp
    keyring-8MjWB8
    ferret
    .ICE-unix
    keyring-6y9txT
    orbit-gdm
    .X11-unix
    keyring-e2WQQa
    .X0-lock
    pulse-weKNqpdx0HtQ
    keyring-AoiV8e
    keyring-i47ize
    keyring-BshjbU
    pulse-8TDHlwHPDc2j
    keyring-vIwkfE
    keyring-M5PGn7
    keyring-pb8Q2x
    keyring-TME3bW
    keyring-gTw1ih
    .esd-0
    <zhang>help
    
    Documented commands (type help <topic>):
    ========================================
    dir  quit
    
    Undocumented commands:
    ======================
    help  q
    
    <zhang>q

        

关键字