эффективная и полная проверка ввода для аргумента и параметра командной строки с помощью python

Я разрабатываю cli с помощью python версии 2.4.3. Я хочу проверить исключение ввода. Ниже приводится часть кода. С помощью этого кода я могу ввести

addcd -t 11 

, и если я наберу

addcd -t str_not_int

или

addcd -s 3

, я поймаю ошибку неверного аргумента типа и неправильной опции. Однако этого недостаточно. например,

addcd s 11

или

addcd s a 

, тогда optparse не сможет обнаружить такого рода неправильный ввод.

, чтобы исключить такой случай, как Однако этого недостаточно. например,

addcd s 11

или

addcd s a 

, тогда optparse не сможет обнаружить такого рода неправильный ввод.

, чтобы исключить такой случай, как Однако этого недостаточно. например,

addcd s 11

или

addcd s a 

, тогда optparse не сможет обнаружить такого рода неправильный ввод.

, чтобы исключить такой случай, как "addcd sa 11 21", я что-то добавляю, проверяя количество аргументов, но не знаю, правильный ли это путь.

Итак, как я могу реализовать тщательную / эффективную проверку ввода для CLI?

class OptionParsingError(RuntimeError):
    def __init__(self, msg):
        self.msg = msg

class OptionParsingExit(Exception):
    def __init__(self, status, msg):
        self.msg = msg
        self.status = status

class ModifiedOptionParser(optparse.OptionParser):
    def error(self, msg):
        raise OptionParsingError(msg)

    def exit(self, status=0, msg=None):
        raise OptionParsingExit(status, msg)

class CDContainerCLI(cmd.Cmd):
    """Simple CLI """
    def __init__(self):
        """ initialization """ 
        cmd.Cmd.__init__(self) 
        self.cdcontainer=None

    def addcd(self, s):
        args=s.split()
        try:
            parser = ModifiedOptionParser()
            parser.add_option("-t", "--track", dest="track_number", type="int",
               help="track number")
            (options, positional_args) = parser.parse_args(args)
        except OptionParsingError, e:
            print 'There was a parsing error: %s' % e.msg
            return
        except OptionParsingExit, e:
            print 'The option parser exited with message %s and result code %s' % (e.msg, e.status)
        return
        if len(args) != 4:
            print "wrong number of inputs"
            return

        cd_obj= CD()
        cd_obj.addCD(options.track_number, options.cd_name)
1
задан pepero 26 October 2010 в 10:05
поделиться