mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 05:01:30 +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][: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'
 | 
