pyhton cmd模块

Cmd模块,一个可以写出仿控制端功能的一个模块,简单介绍模块下的几个方法。


Cmd.onecmd(str)

解释参数尽管它已经以响应提示输入参数,这个方法将会被重写,但是通常不需要,请看对于更有用执行命令的percmd()和postcmd()方法。这个方法将会返回一个标志表明命令解释是否应该被停止,如果有一个do_*的方法去执行一个命令str,那么这个返回值就是这个do_str函数返回的值,否则这个返回值就是默认函数返回的值


Cmd.emptyline()

当有一个空行输入时这个方法会会被调用,如果你没有重写这个方法的话,那么这个它会重复进入最后一个非空的命令(执行最后一个非空的命令)


Cmd.default(line)

当输入一行前缀不能被确认的命令行时该方法会被调用,如果该方法没有被重写,那么它会打印出一个错误的信息并返回。


Cmd_precmd(line)

该方法在命令行被解析值钱,但在输入提示生成并且发出提示后被调用,它存在并且被子类重写,它的返回值被用作被oncmd()方法执行的命令。


Cmd.postcmd(stop,line)

该方法会在命令调度结束之后被调用,它可以被子类重写,参数line表示将会被执行的命令,参数stop是一个标志表示在调用postcmd()方法之后执行是否会被停止,它返回了一个onecmd()方法的值。这个函数的返回值将会被作为一个新值给对应停止的内部标志使用;返回false会造成解析继续。




使用一个别人的例子:

import cmd
import sys
import time

import os

class MyTest(cmd.Cmd):
    prompt="$"
    def __init__(self):
        cmd.Cmd.__init__(self)
    pass

    def do_test(self, arg):
        print "%s: "%type(arg), arg
        pass

    def precmd(self, line):
        """do sth: connect to db or ..."""
        return line

    def postcmd(self, stop, line):
        print "[Input is '%s', state is %s]"%(line,stop)
        sys.stdout.flush()
        return stop

    def do_shell(self,arg):
        os.system(arg)
        pass

    def do_exit(self, arg):
        #sys.exit(0)
        return "bye"


a = MyTest()

a.cmdloop()


do_*,这个*是你自定义的一个命令,当你要执行命令是需要* 后面加你要执行的命令。

当你输入shell时,后面可以加你默认系统的执行命令,

输入exit时你可以退出程序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值