let optionparse.Optionparser ignore unknown command line switches.

Jon Clements joncle at googlemail.com
Sun Aug 1 13:53:05 EDT 2010


On 1 Aug, 16:43, News123 <news1... at free.fr> wrote:
> On 08/01/2010 05:34 PM, Steven W. Orr wrote:
>
>
>
> > On 08/01/10 07:27, quoth News123:
> >> On 08/01/2010 01:08 PM, News123 wrote:
> >>> I wondered, whether there's a simple/standard way to let
> >>> the Optionparser just ignore unknown command line switches.
>
> >> In order to  illustrate, what I try to achieve:
>
> >> import optparse
> >> parser = optparse.OptionParser()
> >> parser.add_option("-t","--test",dest="test",action="store_true")
> >> argv=["tst.py","-t","--ignoreme_and_dont_fail"]
> >> try:
> >>     (options,args)=parser.parse_args(argv)
> >> except:
> >>     # due to --ignoreme_and_dont_fail
> >>     # I will end up here and neither options nor
> >>     # args will be populated
> >>     print "parser error:"
> >> # However I would love to be able to see here
> >> # that options.test is true despite the
> >> # error, that occurred afterwards
> >> print "T",options.test
>
> > You need to let us know *why* you want to do this. My psychotic imagination is
> > contriving that you want to pass on the ignoremeanddontfail options to
> > something else. If so, then you should be using -- instead of this. The other
> > possible scheme to solve your unknown problem is to subclass OptionParser so
> > it does what you want.
>
> Hi Steven,
>
> '--' is good for many use cases, but not for the one I'm looking at.
>
> in my case one imported module should parse some of the options (but
> only the one it understands) already during import.
> the main program will have to parse the same options again.

Take it up a level.

Dedicate a module (called app_configuration) or something to do the
option parsing -- everything the application can support is listed
there... It's a bad idea to ignore invalid options...

When that's imported it runs the parsing for sys.argv whatever... and
you guarantee a variable called app_settings (or whatever) is present
in that module.

Any module that needs the settings, just imports app_configuration and
tries to take what it understands...

Would that work for you?

Jon.



More information about the Python-list mailing list