How can I get optparse's OptionParser to ignore invalid options?

后端 未结 5 1908
清歌不尽
清歌不尽 2020-12-09 15:53

In python\'s OptionParser, how can I instruct it to ignore

5条回答
  •  南方客
    南方客 (楼主)
    2020-12-09 16:35

    This is pass_through.py example from Optik distribution.

    #!/usr/bin/env python
    
    # "Pass-through" option parsing -- an OptionParser that ignores
    # unknown options and lets them pile up in the leftover argument
    # list.  Useful for programs that pass unknown options through
    # to a sub-program.
    
    from optparse import OptionParser, BadOptionError
    
    class PassThroughOptionParser(OptionParser):
    
        def _process_long_opt(self, rargs, values):
            try:
                OptionParser._process_long_opt(self, rargs, values)
            except BadOptionError, err:
                self.largs.append(err.opt_str)
    
        def _process_short_opts(self, rargs, values):
            try:
                OptionParser._process_short_opts(self, rargs, values)
            except BadOptionError, err:
                self.largs.append(err.opt_str)
    
    
    def main():
        parser = PassThroughOptionParser()
        parser.add_option("-a", help="some option")
        parser.add_option("-b", help="some other option")
        parser.add_option("--other", action='store_true',
                          help="long option that takes no arg")
        parser.add_option("--value",
                          help="long option that takes an arg")
        (options, args) = parser.parse_args()
        print "options:", options
        print "args:", args
    
    main()
    

提交回复
热议问题