let optionparse.Optionparser ignore unknown command line switches.

News123 news1234 at free.fr
Mon Aug 2 23:18:19 CEST 2010


On 08/01/2010 07:53 PM, Jon Clements wrote:
> 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
>>
>> 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...
Well the main application would abort the program. I'ts jsut one module
which would like to pre-fetch some 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?
> 

It's not really what I'm looking for, though it might be what I'll end
up doing.

currently I have several apps all importing one module, but all parsing
different options.

There's one common option and I'd like to have one module behaving
differently depending on this option.

My idea was to just change this one module and leave everything else
unmodified.

Another not so nice solution, which could be a very quick and dirty hack
(to be removed lateron) would be to just add to this one module


if "--myoption" in sys.argv:
    dosomething

but I'd have prefered a real Optionparser (ignoring unknown options)
I could even make sure, that the unknown options follow the common options.










More information about the Python-list mailing list