¿Cómo agrego una bandera opcional a mis argumentos de línea de comando?
p.ej. para que yo pueda escribir
python myprog.py
o
python myprog.py -w
Lo intenté
parser.add_argument('-w')
Pero solo recibo un mensaje de error que dice
Usage [-w W]
error: argument -w: expected one argument
que tomo significa que quiere un valor de argumento para la opción -w. ¿Cuál es la forma de aceptar una bandera?
Estoy encontrando http://docs.python.org/library/argparse.html bastante opaco en esta pregunta.
python
command-line-arguments
argparse
interestar
fuente
fuente

Respuestas:
Tal como lo tiene, el argumento w espera un valor después de -w en la línea de comando. Si solo desea activar un interruptor configurando una variable
TrueoFalse, consulte http://docs.python.org/dev/library/argparse.html#action (específicamente store_true y store_false)donde
action='store_true'implicadefault=False.Por el contrario, podría tener
action='store_false', lo que implicadefault=True.fuente
wes siempreFalse.Agregar un fragmento rápido para tenerlo listo para ejecutar:
Fuente: myparser.py
Uso:
fuente
Aquí hay una forma rápida de hacerlo, no requerirá nada además de
sys... aunque la funcionalidad es limitada:flag = "--flag" in sys.argv[1:][1:]es por si el nombre completo del archivo es--flagfuente
--flag, se comportará inesperadamente, y lo que es peor, es que esto a menudo termina siendo una falla de seguridad en el futuro, cuando los datos no confiables terminan siendo pasado a argv. Al final, este método simplemente no debería hacerse. Los analizadores de