如何获得optparse的OptionParser忽略无效选项?

如何获得optparse的OptionParser忽略无效选项?,第1张

如何获得optparse的OptionParser忽略无效选项?

根据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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存