Python argparse banderas de línea de comando sin argumentos

¿Cómo agrego un indicador opcional a mis argumentos de la línea de comando?

p.ej. para que pueda escribir

python myprog.py 

o

 python myprog.py -w 

Lo intenté

 parser.add_argument('-w') 

Pero acabo de recibir un mensaje de error diciendo

 Usage [-w W] error: argument -w: expected one argument 

lo que tomo significa que quiere un valor de argumento para la opción -w. ¿Cuál es la manera de simplemente aceptar una bandera?

Estoy encontrando http://docs.python.org/library/argparse.html bastante opaco en esta pregunta.

Como lo tiene, el argumento w está esperando un valor después de -w en la línea de comandos. Si solo está buscando activar un interruptor configurando una variable True o False , eche un vistazo a http://docs.python.org/dev/library/argparse.html#action (específicamente store_true y store_false)

 import argparse parser = argparse.ArgumentParser() parser.add_argument('-w', action='store_true') 

Edición: Como señala Sven, un valor predeterminado en este caso es superfluo.

Agregando un fragmento rápido para tenerlo listo para ejecutar:

Fuente: myparser.py

 import argparse parser = argparse.ArgumentParser(description="Flip a switch by setting a flag") parser.add_argument('-w', action='store_true') args = parser.parse_args() print args.w 

Uso:

 python myparser.py -w >> True 

Esta es una forma rápida de hacerlo, no requerirá nada más que sys … aunque la funcionalidad es limitada:

flag = "--flag" in sys.argv[1:]

[1:] es en caso de que si el nombre completo del archivo es --flag