我正在用pythonversion2.4.3开发cli。我想进行输入异常检查。以下是代码的一部分。有了这个代码,我就可以打字了addcd -t 11
如果我打字
^{pr2}$
或者addcd -s 3
我将捕捉错误类型参数和错误选项。然而,这还不够。e、 gaddcd 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)