¿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
True
oFalse
, 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
w
es 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--flag
fuente
--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