| 137 | 1 #!/usr/bin/python | 
|  | 2 | 
|  | 3 import sys | 
|  | 4 | 
|  | 5 def dictarg(adict, argv=sys.argv[1:]): | 
|  | 6 | 
|  | 7     shopts = {} | 
|  | 8 | 
|  | 9     # build list of keys | 
|  | 10     for i in adict.keys(): | 
|  | 11         for j in i: | 
|  | 12             s = str(j) | 
|  | 13             if len(s) == 1: | 
|  | 14                 if shopts.has_key(s): | 
|  | 15                     continue | 
|  | 16                 shopts[s] = i | 
|  | 17                 break | 
|  | 18         else: | 
|  | 19             print >> sys.stderr, "dictarg: couldn't generate key for '%s'" % i | 
|  | 20             sys.exit(1) | 
|  | 21 | 
|  | 22     optstring = "?" | 
|  | 23     for i in shopts.keys(): | 
|  | 24         optstring += i + ':' # all these options should have arguments | 
|  | 25 | 
|  | 26     # look for command line args | 
|  | 27     import getopt | 
|  | 28 | 
|  | 29     opts, args = getopt.getopt(argv, optstring) | 
|  | 30 | 
|  | 31     if ('-?', '') in opts: | 
|  | 32         print 'Options:' | 
|  | 33         for i in shopts: | 
|  | 34             print '-%s %s [%s]' % (i, shopts[i], adict[shopts[i]]) | 
|  | 35         sys.exit(0) | 
|  | 36 | 
|  | 37     for o, v in opts: | 
|  | 38         o = o[1:] # cut off the dash | 
|  | 39         adict[shopts[o]] = v | 
|  | 40 | 
|  | 41 # test if invoked from command line | 
|  | 42 if __name__ == '__main__': | 
|  | 43     adict = {} | 
|  | 44     for i in sys.argv: | 
|  | 45         adict[i] = len(i) | 
|  | 46 | 
|  | 47     # print the help | 
|  | 48     dictarg(adict, ['-?']) | 
|  | 49 | 
|  | 50     # test functionality | 
|  | 51     print 'Enter test arguments: ', | 
|  | 52     line = sys.stdin.readline()[:-1].split(' ') | 
|  | 53     dictarg(adict, line) | 
|  | 54     print adict |