[Tutor] optional sys.argv parsing
Andre Walker-Loud
walksloud at gmail.com
Fri Oct 30 05:33:21 CET 2009
Hi Sander,
> On Thu, 2009-10-29 at 17:30 -0400, Andre Walker-Loud wrote:
>> I have a simple question. I am writing a little program that will
>> make some plots of data files. I want to have optional args to pass,
>> for example to specify the plot ranges. I have never written a
>> script/
>> code that takes optional args (but I have used plenty) - so I am
>> feeling a little sluggish writing a good sys.argv reader. I have the
>> following few lines I made, but I am wondering if any of you have
>> suggestions for how to make this better (ie more slick, more
>> readable,
>> more general etc)
>
> You are a perfect candidate for the optparse module [1] which will do
> the heavy lifting for you.
>
> Example code relating to your code below.
Thanks - yes this is exactly what I need. I will play around with this.
Thanks again,
Andre
>
>
> ------
>>>> from optparse import OptionParser
>>>> parser = OptionParser()
>>>> parser.add_option('-f', '--file', action='store', type='string',
> dest='filename', help='Explain your filename')
> <Option at 0x20cf7e8: -f/--file>
>>>> parser.add_option('-x', action='store', type='int', dest='x',
> help='Explain your x value')
> <Option at 0x20cf998: -x>
>>>> parser.print_help()
> Usage: [options]
>
> Options:
> -h, --help show this help message and exit
> -f FILENAME, --file=FILENAME
> Explain your filename
> -x X Explain your x value
>>>>
>>>> args = ['-f','somefilename','-x', '25']
>>>> opts, args = parser.parse_args(args)
>>>> opts.x
> 25
>>>> opts.filename
> 'somefilename'
>>>> type(opts.x)
> <type 'int'>
> -----
>
> Greets
> Sander
>
> [1] http://docs.python.org/library/optparse.html
>
>
>> import sys
>>
>> if len(sys.argv) < 2:
>> print('no data file specified')
>> sys.exit(-1)
>> elif len(sys.argv) > 2:
>> if sys.argv.count('-x') > 1:
>> print('error: multiple instances of "-x xmin xmax"')
>> sys.exit(-1)
>> elif sys.argv.count('-x') == 1:
>> xrange = sys.argv.index('-x')
>> if sys.argv.count('-y') > 1:
>> print('error: multiple instances of "-y ymin ymax"')
>> sys.exit(-1)
>> elif sys.argv.count('-y') == 1:
>> yrange = sys.argv.index('-y')
>> else:
>> xrange = 0
>> yrange = 0
>>
>> if xrange != 0:
>> xmin = float(sys.argv[xrange+1])
>> xmax = float(sys.argv[xrange+2])
>> else:
>> xmin = "x-min determined from data file"
>> xmax = "x-max determined from data file"
>>
>> if yrange != 0:
>> ymin = float(sys.argv[yrange+1])
>> ymax = float(sys.argv[yrange+2])
>> else:
>> ymin = "y-min determined from data file"
>> ymax = "y-max determined from data file"
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list