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