# module getopt -- Standard command line processing. # Function getopt.getopt() has a different interface but provides the # same functionality as the Unix getopt() function. # It has two arguments: the first should be argv[1:] (it doesn't want # the script name), the second the string of option letters as passed # to Unix getopt() (i.e., a string of allowable option letters, with # options requiring an argument followed by a colon). # It raises the exception getopt.error with a string argument if it # detects an error. # It returns two items: # (1) a list of pairs (option, option_argument) giving the options in # the order in which they were specified. (I'd use a dictionary # but applications may depend on option order or multiple # occurrences.) Boolean options have '' as option_argument. # (2) the list of remaining arguments (may be empty). error = 'getopt error' def getopt(args, options): list = [] while args and args[0][:1] == '-' and args[0] <> '-': if args[0] == '--': args = args[1:] break optstring, args = args[0][1:], args[1:] while optstring <> '': opt, optstring = optstring[0], optstring[1:] if classify(opt, options): # May raise exception as well if optstring == '': if not args: raise error, 'option -' + opt + ' requires argument' optstring, args = args[0], args[1:] optarg, optstring = optstring, '' else: optarg = '' list.append('-' + opt, optarg) return list, args def classify(opt, options): # Helper to check type of option for i in range(len(options)): if opt == options[i] <> ':': return options[i+1:i+2] == ':' raise error, 'option -' + opt + ' not recognized'