Este módulo ayuda a los guiones a analizar los argumentos de la línea
de órdenes sys.argv
. Soporta las mismas convenciones que la
funciónde Unix getopt() (incluyendo los significados especiales
de los argumentos de la forma
`-
' and `-
-
').
Se pueden usar opciones largas, del estilo de las del software de GNU
mediante un tercer argumento opcional. Este módulo proporciona una sola
función y una excepción:
long_options, si se especifica, debe ser una lista de cadenas con los nombres
de las opciones largas soportadas. Los caracteres iniciales
'-
-'
no se han de incluir en el nombre de la opción. Las opciones
largas que requieran un argumento deben ir seguidas de un signo igual ("=").
El valor devuelto consta de dos elementos: el primero es una lista de parejas
(option, value)
; el segundo es la lista de argumentos de programa
que queda tras limpiar la lista de opciones (es el corte final de args).
Cada opcion/valor devuelto tiene la opción como primer elemento, con un guion inicial
como primer elemento en las opciones cortas (por ejemplo, '-x'
)
o dos guiones en las opciones largas (por ejemplo, '-
-long-option'
),
y un argumento opción como segundo elemento o una cadena vacía si
la opción carece de argumento. Las opciones aparecen en la lista en el mismo orden
en que se encuentren, permitiendo de este modo apariciones múltiples. Se pueden
mezclar las opciones cortas y largas.
Un ejemplo que utiliza sólo opciones tipo Unix:
>>> import getopt >>> args = '-a -b -cfoo -d bar a1 a2'.split() >>> 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']
Usar nombres de opción largos es igualmente sencillo:
>>> s = '--condition=foo --testing --output-file abc.def -x a1 a2' >>> args = s.split() >>> 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']
En un guion, el uso típico es algo parecido a esto:
import getopt, sys def main(): try: opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="]) except getopt.GetoptError: # presentar información de ayuda y salir: usage() sys.exit(2) output = None for o, a in opts: if o in ("-h", "--help"): usage() sys.exit() if o in ("-o", "--output"): output = a # ... if __name__ == "__main__": main()