Retry:Question about optparse/OptionParser callback.
James Stroud
jstroud at mbi.ucla.edu
Fri Feb 9 19:37:48 EST 2007
Steven W. Orr wrote:
> I decided I could be more articulate. I hope this helps.
>
> I'm writing a program that needs to process options. Due to the nature
> of the program with its large number of commandline options, I would
> like to write a callback to be set inside add_option.
>
> Something like this:
>
> parser.add_option("-b", action="callback", callback=optionhandlr, dest='b')
>
> The Cookbook almost takes me there with a callback function that only
> works for an option called b that takes no argument:
>
> def optionhndlr(option, opt_str, value, parser):
> if parser.values.b:
> raise OptionValueError("can't use %s after -b" % opt_str)
> setattr(parser.values, option.dest, 1)
>
> but warns that "it needs a bit of work: the error message and the flag
> that it sets must be generalized". I do need to do my option processing
> in an option processor with many options and I'd both like to do it in
> one method (if possible) and learn a trick or two while I'm at it. Is it
> possible to have a single callback that could be used in the general case?
>
> All I need is to be taught how to fish...
>
> TIA
>
> --
> Time flies like the wind. Fruit flies like a banana. Stranger things
> have .0.
> happened but none stranger than this. Does your driver's license say
> Organ ..0
> Donor?Black holes are where God divided by zero. Listen to me! We are
> all- 000
> individuals! What if this weren't a hypothetical question?
> steveo at syslang.net
If I understand your question, you are already half way there:
def optionhndlr(option, opt_str, value, parser):
if getattr(parser.values, option.dest):
msg = "can't use %s afer -%s" % (opt_str, option.dest)
raise OptionValueError, msg
setattr(parser.values, option.dest, 1)
James
More information about the Python-list
mailing list