Saad Javed wrote:

> Hi,
> 
> #!/usr/bin/env python
> 
> import sys
> 
> x = 'Saad is a boy'
> 
> def main(x):
> a = []
> b = x.split(' ')
> for item in b:
> a.append(item)
> print a
> if __name__ == '__main__':
> x = sys.argv[1]
> main(x)
> 
> 
> How can I make this program run with the default value of x if I don't
> specify an argument at the command line?
> It should do this:
> 
> saad@saad:~$ python test.py "Mariam is a girl"
> ['Mariam', 'is', 'a', 'girl']
> 
> saad@saad:~$ python test.py
> ['Saad', 'is', 'a', 'boy']
> 
> But the simply running "test.py" gives:
> Traceback (most recent call last):
>   File "input_test.py", line 13, in <module>
>     x = sys.argv[1]
> IndexError: list index out of range
> 
> 
> Saad

The argparse module (see <http://docs.python.org/2/library/argparse.html>)
offers a flexible way to specify command line arguments. Your program would 
look like this:

$ cat optional_arg.py
#!/usr/bin/env python
import argparse

def main():
    parser = argparse.ArgumentParser(
        description="Print a sentence as a list of words")
    parser.add_argument(
        "sentence", nargs="?",
        default="Mary had a little lamb")

    args = parser.parse_args()

    words = args.sentence.split()
    print words

if __name__ == "__main__":
    main()

...and work like this:

$ ./optional_arg.py
['Mary', 'had', 'a', 'little', 'lamb']
$ ./optional_arg.py "That's all folks"
["That's", 'all', 'folks']

It would include help...

$ ./optional_arg.py -h
usage: optional_arg.py [-h] [sentence]

Print a sentence as a list of words

positional arguments:
  sentence

optional arguments:
  -h, --help  show this help message and exit

...and basic error reporting:

$ ./optional_arg.py That\'s all folks
usage: optional_arg.py [-h] [sentence]
optional_arg.py: error: unrecognized arguments: all folks

almost for free. So even if you find argparse too complex right now keep in 
mind that it exists until you are comfortable enough with Python to start 
making use of more parts of its standard library.

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to