1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{getopt} ---
|
|
|
|
Parser for command line options.}
|
1998-07-23 14:59:49 -03:00
|
|
|
\declaremodule{standard}{getopt}
|
|
|
|
|
|
|
|
\modulesynopsis{Parser for command line options.}
|
|
|
|
|
1998-03-09 23:36:00 -04:00
|
|
|
|
1994-01-01 21:22:07 -04:00
|
|
|
This module helps scripts to parse the command line arguments in
|
|
|
|
\code{sys.argv}.
|
1998-03-09 23:36:00 -04:00
|
|
|
It supports the same conventions as the \UNIX{} \cfunction{getopt()}
|
1995-03-17 12:07:09 -04:00
|
|
|
function (including the special meanings of arguments of the form
|
1997-04-02 02:05:07 -04: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 18:26:29 -03:00
|
|
|
GNU software may be used as well via an optional third argument.
|
1998-03-09 23:36:00 -04:00
|
|
|
This module provides a single function and an exception:
|
|
|
|
|
|
|
|
\begin{funcdesc}{getopt}{args, options\optional{, long_options}}
|
|
|
|
Parses command line options and parameter list. \var{args} is the
|
|
|
|
argument list to be parsed, without the leading reference to the
|
|
|
|
running program. Typically, this means \samp{sys.argv[1:]}.
|
|
|
|
\var{options} 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{} \cfunction{getopt()} uses). If
|
|
|
|
specified, \var{long_options} is a list of strings with the names of
|
|
|
|
the long options which should be supported. The leading
|
|
|
|
\code{'-}\code{-'} characters should not be included in the option
|
|
|
|
name. Options which require an argument should be followed by an
|
|
|
|
equal sign (\code{'='}).
|
1994-01-01 21:22:07 -04:00
|
|
|
|
|
|
|
The return value consists of two elements: the first is a list of
|
1998-03-09 23:36:00 -04:00
|
|
|
\code{(\var{option}, \var{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
|
2000-04-03 17:13:55 -03:00
|
|
|
element, prefixed with a hyphen for short options (e.g., \code{'-x'})
|
|
|
|
or two hyphens for long options (e.g., \code{'-}\code{-long-option'}),
|
|
|
|
and the option argument as its second element, or an empty string if
|
|
|
|
the option has no argument.
|
1994-01-01 21:22:07 -04:00
|
|
|
The options occur in the list in the same order in which they were
|
1996-09-11 18:26:29 -03:00
|
|
|
found, thus allowing multiple occurrences. Long and short options may
|
|
|
|
be mixed.
|
1998-03-09 23:36:00 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1999-12-21 18:50:05 -04:00
|
|
|
\begin{excdesc}{GetoptError}
|
1998-03-09 23:36:00 -04:00
|
|
|
This 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
|
|
|
|
error. For long options, an argument given to an option which does
|
1999-12-21 18:50:05 -04:00
|
|
|
not require one will also cause this exception to be raised. The
|
|
|
|
attributes \member{msg} and \member{opt} give the error message and
|
|
|
|
related option; if there is no specific option to which the exception
|
|
|
|
relates, \member{opt} is an empty string.
|
|
|
|
\end{excdesc}
|
|
|
|
|
|
|
|
\begin{excdesc}{error}
|
|
|
|
Alias for \exception{GetoptError}; for backward compatibility.
|
1998-03-09 23:36:00 -04:00
|
|
|
\end{excdesc}
|
|
|
|
|
1996-09-11 18:26:29 -03:00
|
|
|
|
|
|
|
An example using only \UNIX{} style options:
|
1994-01-01 21:22:07 -04:00
|
|
|
|
1998-02-13 02:58:54 -04:00
|
|
|
\begin{verbatim}
|
1994-01-01 21:22:07 -04: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 02:58:54 -04:00
|
|
|
\end{verbatim}
|
1998-03-09 23:36:00 -04:00
|
|
|
|
1996-09-11 18:26:29 -03:00
|
|
|
Using long option names is equally easy:
|
|
|
|
|
1998-02-13 02:58:54 -04:00
|
|
|
\begin{verbatim}
|
1996-09-11 18:26:29 -03: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
|
1998-03-09 23:36:00 -04:00
|
|
|
[('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x',
|
|
|
|
'')]
|
1996-09-11 18:26:29 -03:00
|
|
|
>>> args
|
|
|
|
['a1', 'a2']
|
|
|
|
>>>
|
1998-02-13 02:58:54 -04:00
|
|
|
\end{verbatim}
|