| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \section{Standard Module \sectcode{getopt}} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \label{module-getopt} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \stmodindex{getopt} | 
					
						
							|  |  |  | This module helps scripts to parse the command line arguments in | 
					
						
							|  |  |  | \code{sys.argv}. | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | It supports the same conventions as the \UNIX{} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \code{getopt()} | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | function (including the special meanings of arguments of the form | 
					
						
							| 
									
										
										
										
											1997-04-02 06:05:07 +00:00
										 |  |  | `\code{-}' and `\code{-}\code{-}'). | 
					
						
							|  |  |  | % That's to fool latex2html into leaving the two hyphens alone!
 | 
					
						
							|  |  |  | Long options similar to those supported by | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | GNU software may be used as well via an optional third argument. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | It defines the function | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | \code{getopt.getopt(args, options [, long_options])} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | and the exception | 
					
						
							|  |  |  | \code{getopt.error}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The first argument to | 
					
						
							|  |  |  | \code{getopt()} | 
					
						
							|  |  |  | is the argument list passed to the script with its first element | 
					
						
							|  |  |  | chopped off (i.e., | 
					
						
							|  |  |  | \code{sys.argv[1:]}). | 
					
						
							|  |  |  | The second argument is the string of option letters that the | 
					
						
							|  |  |  | script wants to recognize, with options that require an argument | 
					
						
							|  |  |  | followed by a colon (i.e., the same format that \UNIX{} | 
					
						
							|  |  |  | \code{getopt()} | 
					
						
							|  |  |  | uses). | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | The third option, if specified, is a list of strings with the names of | 
					
						
							| 
									
										
										
										
											1997-04-02 06:05:07 +00:00
										 |  |  | the long options which should be supported.  The leading \code{'-}\code{-'} | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | characters should not be included in the option name.  Options which | 
					
						
							|  |  |  | require an argument should be followed by an equal sign (\code{'='}). | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | The return value consists of two elements: the first is a list of | 
					
						
							|  |  |  | option-and-value pairs; the second is the list of program arguments | 
					
						
							|  |  |  | left after the option list was stripped (this is a trailing slice of the | 
					
						
							|  |  |  | first argument). | 
					
						
							|  |  |  | Each option-and-value pair returned has the option as its first element, | 
					
						
							|  |  |  | prefixed with a hyphen (e.g., | 
					
						
							|  |  |  | \code{'-x'}), | 
					
						
							|  |  |  | and the option argument as its second element, or an empty string if the | 
					
						
							|  |  |  | option has no argument. | 
					
						
							|  |  |  | The options occur in the list in the same order in which they were | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | found, thus allowing multiple occurrences.  Long and short options may | 
					
						
							|  |  |  | be mixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | An example using only \UNIX{} style options: | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | >>> import getopt, string | 
					
						
							|  |  |  | >>> args = string.split('-a -b -cfoo -d bar a1 a2') | 
					
						
							|  |  |  | >>> args | 
					
						
							|  |  |  | ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2'] | 
					
						
							|  |  |  | >>> optlist, args = getopt.getopt(args, 'abc:d:') | 
					
						
							|  |  |  | >>> optlist | 
					
						
							|  |  |  | [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')] | 
					
						
							|  |  |  | >>> args | 
					
						
							|  |  |  | ['a1', 'a2'] | 
					
						
							|  |  |  | >>>  | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | Using long option names is equally easy: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | >>> s = '--condition=foo --testing --output-file abc.def -x a1 a2' | 
					
						
							|  |  |  | >>> args = string.split(s) | 
					
						
							|  |  |  | >>> args | 
					
						
							|  |  |  | ['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2'] | 
					
						
							|  |  |  | >>> optlist, args = getopt.getopt(args, 'x', [ | 
					
						
							|  |  |  | ...     'condition=', 'output-file=', 'testing']) | 
					
						
							|  |  |  | >>> optlist | 
					
						
							|  |  |  | [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x', '')] | 
					
						
							|  |  |  | >>> args | 
					
						
							|  |  |  | ['a1', 'a2'] | 
					
						
							|  |  |  | >>>  | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | The exception | 
					
						
							| 
									
										
										
										
											1997-12-30 20:38:16 +00:00
										 |  |  | \code{getopt.error} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | is raised when an unrecognized option is found in the argument list or | 
					
						
							|  |  |  | when an option requiring an argument is given none. | 
					
						
							|  |  |  | The argument to the exception is a string indicating the cause of the | 
					
						
							| 
									
										
										
										
											1996-09-11 21:26:29 +00:00
										 |  |  | error.  For long options, an argument given to an option which does | 
					
						
							|  |  |  | not require one will also cause this exception to be raised. |