[Python-3000] Move argv[0]? (Re: Unicode and OS strings)

Ron Adam rrr at ronadam.com
Mon Sep 17 17:51:18 CEST 2007



Greg Ewing wrote:
> Thomas Wouters wrote:
>> If you want to put more meaning in the argv list, use an option 
>> parser.
> 
> I want to put *less* meaning in it, not more. :-)
> And using an argument parser is often overkill for
> simple programs.

Would it be possible to split out the (pre) parsing from optparse so that 
instead of returning a list, it returns a dictionary of attributes and values?

This would only contain what was given in the command line as a first 
"lighter weight" step to parsing the command line.

    opts = opt_parser(argv)
    command_name = opts['argv0']   # better name for argv0?

Or...

    opts = opt_parser(argv)
    if "-h" in opts or "--h" in opts:
       print("Help on {argv0}: ...".format(opts))


If the dictionary was pre defined with defaults it might be more like..

     opts = {'-h':False, '--h':False}
     opts.update(opt_parser(argv)

     if opts['-h'] or opts['--h']:
        print("Help on {argv0}: ...".format(opts))


This avoids the loop for the simplest cases.

A second dispatcher/validator object could then use this as input.


Regards,
   Ron



>> The _actual_ meaning of each element depends entirely on the 
>> program that's started. For Python-the-language, there isn't any 
>> difference between them.
> 
> So in your Python programs, you're quite happy
> to write
> 
>    for arg in sys.argv:
>      process(arg)
> 
> and not care about what this does with argv[0]?
> 
> I hardly see how one can claim that there's
> "no difference" between argv[0] and the rest
> for practical purposes.
> 


More information about the Python-3000 mailing list