How to process python generated error messages my own way?
对于以下代码:< PRE>opts,args=getopt.getopt(sys.argv[1:,,"C:",…对于opts中的o、v:…elif o in("-c",-%s"%checkstring"):kcheckOnly=真客户端温度=V[/cc]
如果在-c之后没有给出参数,我会得到如下的错误消息。
< PRE>回溯(最近一次呼叫的最后一次):文件"nippgatingviolationmain.py",第100行,inopts,args=getopt.getopt(sys.argv[1:,"hdc:t:",[helpstring,debugtring,checkstring,twxstring])文件"/system/library/frameworks/python.framework/versions/2.6/lib/python2.6/getopt.py",第91行,在getopt中opts,args=do_short(opts,args[0][1:],shortopts,args[1:]文件"/system/library/frameworks/python.framework/versions/2.6/lib/python2.6/getopt.py",第195行,在do-short中opt)getopt.getopterror:选项-c需要参数[/cc]
是否有任何方法可以捕获此错误并将其处理为打印类似的内容?似乎只在try/except中包装代码不起作用。
< PRE>错误:您忘记在-c选项后提供文件名[/cc]
正确的答案是使用OptionParser模块,而不是尝试"滚动您自己的"。
您可以捕获getopt.getopterror并自己检查"opt"和"msg"属性:
1 2 3 4 5 6 | try: opts, args = getopt.getopt(sys.argv[1:],"c:", ... except getopt.GetoptError, e: if e.opt == 'c' and 'requires argument' in e.msg: print >>sys.stderr, 'ERROR: You forgot to give the file name after -c option' sys.exit(-1) |