mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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][0] = '-' 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'
 |