Я разрабатываю 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 a 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)