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@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor