from optparse import OptionParser things = { 'this_thing': this, 'that_thing': that, 'the_other': get_the_other(), } parser = OptionParser("Usage: %prog [options] ") # uncomment if you need to ignore options after the first argument, e.g. "mywrapper -x ls -l" # parser.disable_interspersed_args() parser.add_option("-n", "--number", dest="number", help="Quantity of things", metavar="NUM", type="int") parser.add_option("-h", "--host", dest="hostname", help="Hostname. Default: %default", metavar="HOST", default="localhost") parser.add_option("-s", "--sort", dest="sort", help="Sort by the given key. One of: length,name.", metavar="KEY", type="choice", choices=['length','name']) parser.add_option("-v", "--verbose", dest="verbose", help="Print extra info.", action="store_true") parser.add_option("-t", "--thing", dest="thing", help="What are we looking for? One of %s." % targets.keys(), type="choice", choices=targets.keys(), default="this_thing") (options, args) = parser.parse_args() if (len(args)<=0): parser.print_help() sys.exit(0) num = options.number thing = things[option.thing] if options.verbose: verbose_write = lambda s: sys.stderr.write(s) else: verbose_write = lambda s: 0 Shorter: from optparse import OptionParser parser = OptionParser("Usage: %prog [options] ") parser.add_option("-n", "--number", dest="number", help="Quantity of things", metavar="NUM", type="int") parser.add_option("-h", "--host", dest="hostname", help="Hostname. Default: %default", metavar="HOST", default="localhost") parser.add_option("-s", "--sort", dest="sort", help="Sort by the given key. One of: length,name.", metavar="KEY", type="choice", choices=['length','name']) parser.add_option("-v", "--verbose", dest="verbose", help="Print extra info.", action="store_true") (options, args) = parser.parse_args() if (len(args)<=0): parser.print_help() sys.exit(0)