En Python, entiendo cómo se pueden agregar argumentos int y str a los scripts.
parser=argparse.ArgumentParser(description="""Mydescription""")
parser.add_argument('-l', type=str, default='info', help='String argument')
parser.add_argument('-dt', type=int, default ='', help='int argument')
¿Qué es para los booleanos?
Básicamente, quiero pasar una bandera a mi script que le dirá al script si debe realizar una acción específica o no.
action='store_true'
?Respuestas:
Puede usar el
action
constore_true
|store_false
, o puede usar un int y dejar que la conversión implícita verifique un valor booleano.Al usar
action
, no pasaría un argumento--foo=true
y--foo=false
, simplemente lo incluiría si se configurara como verdadero.De hecho, creo que lo que quieres es
parser.add_argument('-b', action='store_true', default=False)
fuente
default=False
sea necesario.parser.add_argument('--foo', action='store_true')
fuente
import distutils.util ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true')
Ejemplo llamándolo:
$ ./myscript # argp.on = 1 $ ./myscript --on=false # argp.on = 0 $ ./myscript --on=False # argp.on = 0 $ ./myscript --on=0 # argp.on = 0 $ ./myscript --on=1 # argp.on = 1 $ ./myscript -o0 # argp.on = 0 $ ./myscript -o false # argp.on == 0
Debo mencionar que también puede vincular el argumento a una función contenedora local, para manejar alguna otra coincidencia exacta de cadenas si desea admitir valores como "sí" y "no". también puede intentar interpretar la entrada como yaml, que también puede manejar sí / no. Sin embargo, no he hecho esto en un tiempo, y creo que últimamente he apelado a argumentos mutuamente excluyentes con el mismo
dest
valor, uno--no-option
conaction='store_false'
y otro--option
conaction='store_true'
fuente