[Tutor] Command line args

Alan Gauld alan.gauld at btinternet.com
Tue Apr 10 09:38:23 CEST 2007


"Kirk Bailey" <deliberatus at verizon.net> wrote 

> Try:
>     filename=sys.arv[1]
> except Exception, e:

This still doesn't help for the problem where a 
different exception is raised.It really does need to be

try: filename = sys.argv[1]:
except IndexError:


>     if filename='':
>         filename='foo' # define a default value
>     else:
>         if foo: # detect one likely error
>             foobarcode
>     else:

This is invalid syntax it would need to be a chain of if/elif/else

> another idea is simply detect that there IS a argument;
> 
> if sys.argv[1];
> filename=sys.argv[1]
> ...
> which avoids try altogether. Somehow I kinda like this way more.

This would still throw an exception if argv[1] doesn't exist 
because the code still tries to access non existent data. 
You cannot get away without using the try/except here 
unless you check the length of argv:

if len(sys.argv) > 1:
    filename = sys.argv[1]

Now you can check whether filename is valid or not.

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld



More information about the Tutor mailing list