Looking for for some ideas for argument processing

Ivan Van Laningham ivanlan at callware.com
Wed Jun 9 10:26:12 EDT 1999

Hi All--

(I've been off email for a week, just getting it back today, so forgive
me for posting replies to letters that might be out of date. ...)

Doug Hellmann wrote:
> cmedcoff at my-deja.com wrote:
> >
> > I'm writing a script with is going to make heavy use of script
> > arguments.  I'd like to hear some ideas on some ways to support this.
> >
> > One idea I've had so far is to write a class which is a dictionary
> > of "directives" to function objects, where a "directive" might be '-
> > c', '/f', or whatever.  This seems to work well if all arguments are of
> > this simple form.  However I would also like to support arguments
> > like "python myscript.py /a /f /x "bip" "bop", /g"; the point here
> > being that "directives" may take arguments.  This kind of messes up the
> > simple loop you'd otherwise use to process arguments.
> >
> >         a = BuildArgumentProcessor()
> >
> >         # process arguments
> >         for x in sys.argv[1:]:
> >             opt = x[1:2]
> >             optArg = x[2:]
> >             a.Process(opt, optArg)
> >
> > This would work if somehow inside the for loop one could "increment
> > this list iterator more that once" (sorry I'm coming from a C++
> > background).  I don't see anyway of doing this.  Is it possible?  Any
> > other ideas?
> >

Check out

I think you may find it gets pretty close to what you want.  Arguments
provided on the command-line can be ints, strings, lists, tuples; IIRC
it can do dictionaries, too.  Documentation is sketchy, so you'll have
to read the code & look at the docstrings, but if it can't do what you
want I may have time to fix it so it will.  Some of these days, in my
copious free time, I will HTML-ize the documentation;-)  The short
version is that you make a dictionary out of the command-line args, and
by the time you instantiate the dictionary describing the args, most
processing has been done.  I.e., if one of the args is a filename ("-f
foofile"), when you access the "f" key in the dict, the value of it is
the opened file.  And so on.

<yes-you-can-change-the-leadin-char-from-dash-to-/-or-whatever>-ly y'rs,

Ivan Van Laningham
Callware Technologies, Inc.
ivanlan at callware.com
See also: 
Army Signal Corps:  Cu Chi, Class of '70

More information about the Python-list mailing list