# HG changeset patch # User Jeff Hammel # Date 1415142548 28800 # Node ID bbe1d192a61c970c03897bd5d4a08c0187c8e27c # Parent b97c454cfa3b8f4392dbb612b3ece258c3bdc68e sample diff -r b97c454cfa3b -r bbe1d192a61c example/dictarg.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/example/dictarg.py Tue Nov 04 15:09:08 2014 -0800 @@ -0,0 +1,54 @@ +#!/usr/bin/python + +import sys + +def dictarg(adict, argv=sys.argv[1:]): + + shopts = {} + + # build list of keys + for i in adict.keys(): + for j in i: + s = str(j) + if len(s) == 1: + if shopts.has_key(s): + continue + shopts[s] = i + break + else: + print >> sys.stderr, "dictarg: couldn't generate key for '%s'" % i + sys.exit(1) + + optstring = "?" + for i in shopts.keys(): + optstring += i + ':' # all these options should have arguments + + # look for command line args + import getopt + + opts, args = getopt.getopt(argv, optstring) + + if ('-?', '') in opts: + print 'Options:' + for i in shopts: + print '-%s %s [%s]' % (i, shopts[i], adict[shopts[i]]) + sys.exit(0) + + for o, v in opts: + o = o[1:] # cut off the dash + adict[shopts[o]] = v + +# test if invoked from command line +if __name__ == '__main__': + adict = {} + for i in sys.argv: + adict[i] = len(i) + + # print the help + dictarg(adict, ['-?']) + + # test functionality + print 'Enter test arguments: ', + line = sys.stdin.readline()[:-1].split(' ') + dictarg(adict, line) + print adict