6.16 getopt -- Analizador de opciones de línea de órdenes

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:

getopt (args, options[, long_options])
Analiza las opciones de la línea de órdenes y la lista de parámetros. args es la lista de argumentos que se ha de analizar, sin la referencia al programa en ejecución al principio. Típicamente, esto supone pasar "sys.argv[1:]". options es la cadena de letras de opción que el guion desea reconocer, con opciones que requieren un argumento seguido por dos puntos (":"; es decir, el mismo formato que en Unix utiliza getopt()).

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.

GetoptError
Se lanza cuando se encuentra una opción no reconocida en la lista de argumentos o una opción que requiere argumento no lo tiene. El argumento de la excepción es una cadena que indica la causa del error. En las opciones largas, se lanza también esta excepción cuando se le da una argumento a una opción que no lo requiere. Los atribuitos msg y opt proporcionan el mensaje de error y la opción afectada. Si no hay una opción específica relativa a la excepción, opt es la cadena vacía.

error
Alias de GetoptError; por compatibilidad hacia atrás.

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()

Ver Sobre este documento... para obtener información sobre sugerencias.