Configuración de argumentos
El método add_argument
permite configurar una gran cantidad de opciones de uso para cada argumento,
las cuales se pasan como argumentos del método:
parámetro | significado |
---|---|
type |
tipo de valor de entrada - agrega conversión |
required |
obligatoriedad del argumento a la entrada (booleano) |
default |
valor predefinido salvo indicación desde comandos |
choices |
lista con los valores permitidos a la entrada |
dest |
nombre alternativo de la variable |
help |
texto de ayuda - se muestra al requerirla por comandos |
action |
acciones predefinidas del argumento |
nargs |
número de valores del argumento |
Debe señalarse que los argumentos posicionales no aceptan todas las opciones listadas.
Renombrado de variable
El argumento dest
es el que permite cambiarle el nombre
a la variable del atributo
adentro del programa:
analizador.add_argument(
'-a', # abreviación
'--argumento-entrada', # nombre completo
dest='x', # nombre de variable
)
En este ejemplo se le asigna el nombre x
al atributo-clave:
# lectura de argumentos
valores_argumentos = analizador.parse_args()
# consulta como diccionario
valores = vars(valores_argumentos) # clave: 'x'
# consulta desde atributo
x = valores_argumentos.x # atributo: 'x'
Obligatoriedad
El atributo required
es el encargado de configurar la obligatoriedad del argumento.
analizador.add_argument(
'-a',
'--argumento-entrada',
required=True # argumento obligatorio
)
False
.
En cambio, los argumentos posicionales son obligatorios y por ello no disponen de este atributo.
Valor por defecto
El atributo default
asigna un valor predefinido para el argumento
para aquellas situaciones donde no se carga un valor de entrada.
analizador.add_argument(
'-a',
'--argumento-entrada',
default=0 # '0' de manera predefinida
)
None
.
Opciones prefijadas
El argumento choices
acepta una lista con todos los valores permitidos del argumento.
analizador.add_argument(
'-a',
'--argumento-entrada',
choices=["A", "B", "C"] # valores permitidos
)
# correctos
py rutina.py -a A
py rutina.py -a B
py rutina.py -a C
# fallidos
py rutina.py -a a
py rutina.py -a z
py rutina.py -a 7
Tipo
El argumento type
define a qué tipo de datos será convertido
el valor de entrada. La conversión es automática.
analizador.add_argument(
'-a',
'--argumento-entrada',
type=int # tipo de datos: entero
)
Si el valor de entrada no es convertible por el tipo elegido entonces se produce un error.
Ejemplo de uso:
# correctos
py rutina.py -a 8
py rutina.py -a "8"
# fallidos
py rutina.py -a 'Hola mundo' # string
py rutina.py -a true # booleano
Texto de ayuda
El atributo help
permite asignar un texto descriptivo que aparecerá al usar el argumento --help
como entrada de la rutina.
analizador.add_argument(
'-a',
'--argumento-entrada',
help="Descripción del argumento y su utilización."
)
Es de uso opcional.
Acciones
El parámetro action
permite configurar distintos tipos de opciones,
las cuales se muestran a continuación.
Guardar - store
Esta es la opción por default. Guarda el valor de entrada en la variable del argumento.
Guardar constante - store_const
Esta opción asigna el valor const
como salida sólo si el argumento está presente al menos una vez.
En caso contrario devuelve None
.
Verdadero - store_true
Esta acción crea un argumento booleano
que es True
si el argumento está presente.
En caso contrario da False
.
Sirve para crear flags de habilitación de opciones.
Falso - store_false
Es el complemento de store_true
.
Sirve para crear flags de bloqueo de opciones.
Adjuntar valores - append
Esta acción hace que al argumento se le pueda pueda asignar múltiples valores por separado y los junta todos en una lista.
Si el argumento no está presente en la entrada se devuelve None
.
py rutina.py -a 8 # ['8']
py rutina.py -a 8 -a hola # ['8', 'hola']
py rutina.py # 'None'
Adjuntar constante - append_const
Esta acción crea una lista donde se repite el valor de la constante indicada tantas veces como aparezca el argumento.
Si el argumento no está presente en la entrada se devuelve None
py rutina.py # 'None'
py rutina.py -a # ['21']
py rutina.py -a -a # ['21', '21']
py rutina.py -aa # ['21', '21']
Contar repeticiones - count
La acción count
cuenta las repeticiones del argumento especificado,
devolviendo la cantidad como entero.
Si el argumento no se ingresa entonces se devuelve False
.
py rutina.py # 'None'
py rutina.py -a # '1'
py rutina.py -a -a # '2'
py rutina.py -aa # '2'
py rutina.py -aaa # '3'
Versión - version
El argumento version
permite leer la etiqueta de versión actual.
analizador.add_argument(
'-v', '--version',
action='version'
)
analizador.version="v1.0.0"
Ayuda - help
La acción help
es la encargada de crear argumentos de ayuda por consola.
Muestra los textos de ayuda de todos los otros argumentos,
la descripción del programa incluida en el parser, etc.
analizador.add_argument(
'-a', '--ayuda',
action='help',
help="comando alternativo a 'help'"
)
La salida por consola es algo similar a esto:
options:
-h, --help show this help message and exit
-a, --ayuda alternativa a 'help'
Múltiples valores
El parámetro opcional nargs
es el encargado de determinar el número de valores de entrada permitidos en el argumento.
Los valores permitidos son los siguientes:
valor | significado |
---|---|
N (entero) | N valores obligatorios - se guardan en una lista |
? |
un único valor - opcional |
* |
cantidad arbitraria - guardado en lista |
+ |
cantidad arbitraria (al menos uno) - guardado en lista |
argparse.REMAINDER |
todos los valores asignados al final - guardado en lista |
Ejemplo: Supóngase por ejemplo un argumento que acepta múltiples valores de entrada y que no son obligatorios: