metavar - Python argparse banderas de línea de comando sin argumentos
argparse python boolean (3)
¿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.
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
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
, visite http://docs.python.org/dev/library/argparse.html#action (específicamente store_true y store_false)
parser.add_argument(''-w'', action=''store_true'')
Edición: como señala Sven, un valor predeterminado en este caso es superfluo.
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