根据synack的要求,在其他答案的注释中,我发布了一个解决方案的技巧,该解决方案在将输入传递给父级之前先将其净化
OptionParser:
import optparseimport reimport copyimport SConsclass NoErrOptionParser(optparse.OptionParser): def __init__(self,*args,**kwargs): self.valid_args_cre_list = [] optparse.OptionParser.__init__(self, *args, **kwargs) def error(self,msg): pass def add_option(self,*args,**kwargs): self.valid_args_cre_list.append(re.compile('^'+args[0]+'=')) optparse.OptionParser.add_option(self, *args, **kwargs) def parse_args(self,*args,**kwargs): # filter out invalid options args_to_parse = args[0] new_args_to_parse = [] for a in args_to_parse: for cre in self.valid_args_cre_list: if cre.match(a): new_args_to_parse.append(a) # nuke old values and insert the new while len(args_to_parse) > 0: args_to_parse.pop() for a in new_args_to_parse: args_to_parse.append(a) return optparse.OptionParser.parse_args(self,*args,**kwargs)def AddOption_and_get_NoErrOptionParser( *args, **kwargs): apply( SCons.script.AddOption, args, kwargs) no_err_optparser = NoErrOptionParser(optparse.SUPPRESS_USAGE) apply(no_err_optparser.add_option, args, kwargs) return no_err_optpars
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)