Chris Angelico wrote: > On Thu, Feb 21, 2013 at 9:05 PM, Santosh Kumar <sntshkm...@gmail.com> > wrote: >> parser.add_argument( >> 'install', >> nargs='?', >> help='install myapp' >> ) >> >> parser.add_argument( >> 'uninstall', >> nargs='?', >> help='uninstall myapp' >> ) >> >> args = parser.parse_args() > > What you've done is make your program expect arguments, not options. > Try running your script --help and you'll see how it parses. Whatever > keyword is given goes into args.install, and if you provide a second > arg, it'll become args.uninstall. > > To do what you're looking for there, I wouldn't bother with argparse > at all - I'd just look at sys.argv[1] for the word you're looking for. > Yes, it'd be a bit strict and simplistic, but by the look of things, > you don't need sophistication. > > ChrisA
There's a simple way to use argparse import argparse def install(): print "installing" def uninstall(): print "uninstalling" def update(): print "updating" actions = dict(install=install, update=update, uninstall=uninstall) parser = argparse.ArgumentParser() parser.add_argument("action", choices=actions) args = parser.parse_args() actions[args.action]() that doesn't involve a lot of administrative overhead and allows you to add options common to all "actions". Then there's the "right" way involving subparsers import argparse def install(args): print "installing" def uninstall(args): print "uninstalling" def update(args): print "updating" actions = dict(install=install, update=update, uninstall=uninstall) parser = argparse.ArgumentParser() subparsers = parser.add_subparsers() for name, func in actions.iteritems(): p = subparsers.add_parser(name) p.set_defaults(func=func) args = parser.parse_args() args.func(args) which is still not too bad, although in a realistic application you'd have to replace the for loop with individual blocks of code for every subparser. -- http://mail.python.org/mailman/listinfo/python-list