Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language

Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

Retry:Question about optparse/OptionParser callback.

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...


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)


Steven W. Orr wrote:
> I decided I could be more articulate. I hope this helps.

In case James did not guess right: try to provide more details about /what/
you want to achieve rather than /how/ you want to get there.
And please don't open a third thread for it.


Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc