pregunta sobre opciones

Arnau Sanchez pyarnau en gmail.com
Mar Mayo 20 23:30:29 CEST 2008


Pablo Rodríguez escribió:
> Usando getopt, intento definir una situación de opciones incompatibles
> (más bien son no necesarias). Lo hago con un condicional:
>
> if opt in ("-s", "--start-playing") and ("-b", "--with-buttons"):
>
> El problema es que así me salta siempre que selecciono una de las dos
> opciones y si lo defino así, no salta nunca:
>
> if opt in ("-s", "--start-playing") and opt in ("-b", "--with-buttons"):
>
> ¿Cómo puedo hacer para que las dos opciones sean incompatibles?
>   
En cada iteración, "opt" tiene un valor, el que sea, pero no puede ser 
que a la vez -s y -b. Tendrías que recorrer todo el bucle, guardar los 
valores en alguna variable y al final hacer las comprobaciones necesarias.

Como getopt es tan engorroso en ésta y otras cuestiones, casi todo el 
mundo usa optparse:

http://docs.python.org/lib/module-optparse.html

from optparse import OptionParser
usage = """Usage: myscript [options]

do this and that"""
parser = OptionParser(usage)
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

options, args = parser.parse_args()

A lo que podríamos añadir, en algo parecido a lo que quieres:

# no tiene sentido, es solo un ejemplo
if options.filename and options.verbose:
    sys.stderr.write("Incompatible options: ....\n")
    parser.print_help()
    sys.exit(1)
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es