= Python argparse
* [[https://ellibrodepython.com/python-argparse]]
== argparse
* o = argparse.ArgumentParser:
* description: se muestra en la ayuda del programa
* prefix_chars: cambia el prefijo de los argumentos
* fromfile_prefix_chars: establece el prefijo para importar un archivo que contiene los argumentos
* version: numero de versión
* g = o.add_mutually_exclusive_group(): argumentos exluyentes entre si
* g.add_argument
* o.add_argument
* ''-'': argumento corto
* ''--'': argumento largo
* type: tipo int, str...
* help: texto de ayuda
* choices: lista de opciones válidas
* default: valor por defecto si no se pasa el parámetro
* required: True|False
* dest: cambia el nombre de la variable donde se almacena el valor
* nargs
* n: número de argumentos
* ''?'': argumento opcional
* ''+'': al menos 1 argumento
* ''argparse.REMAINDER'': recoge el resto de valores, usar como última opción (de todos los ''add_argument'')
* action
* store: Es el comportamiento por defecto que hemos visto anteriormente. Simplemente almacena el valor que se pasa con el argumento en una variable.
* store_const: Almacena una constante en la variable, cuyo valor debemos especificar en const.
* store_true: Almacena el booleano True en la variable. Muy útil para definir flags que no reciben un valor concreto.
* store_false: Análogo al anterior pero almacena False.
* append: Añade el argumento a una lista. Útil cuando un argumento es pasado múltiples veces.
* append_const: Similar a append pero almacena en la lista la constante especificada en const.
* count: Cuenta el número de veces que un determinado argumento es pasado.
* help: Muestra la ayuda del programa y finaliza sin hacer nada más.
* version: Muestra la versión del programa y finaliza la ejecución.
* se pueden crear acciones personalizadas con ''argparse.Action''
== ejemplos
# calculadora.py
import argparse
parser = argparse.ArgumentParser(description='Calculadora, suma/resta/multiplica a y b')
parser.add_argument('-a', '--numero_a', type=int, help='Parámetro a')
parser.add_argument('-b', '--numero_b', type=int, help='Parámetro b')
parser.add_argument('-o', '--operacion',
type=str,
choices=['suma', 'resta', 'multiplicacion'],
default='suma', required=False,
help='Operación a realizar con a y b')
args = parser.parse_args()
# cambio_prefijo.py
import argparse
parser = argparse.ArgumentParser(prefix_chars='+')
parser.add_argument('+a')
parser.add_argument('+b')
args = parser.parse_args()
print(vars(args))
# argumentos_fichero.py
import argparse
parser = argparse.ArgumentParser(fromfile_prefix_chars='@')
parser.add_argument('-a')
parser.add_argument('-b')
parser.add_argument('-c')
parser.add_argument('-d')
parser.add_argument('-e')
parser.add_argument('-f')
args = parser.parse_args()
print(vars(args))
# argumentos_fichero.py @args.txt
# excluyentes.py
import argparse
parser = argparse.ArgumentParser()
grupo = parser.add_mutually_exclusive_group()
grupo.add_argument('-f', '--foo')
grupo.add_argument('-b', '--bar')
args = parser.parse_args()
print(vars(args))
# help_version.py
import argparse
parser = argparse.ArgumentParser()
parser.version = '1.0'
parser.add_argument('--ayuda', action='help')
parser.add_argument('--version', action='version')
args = parser.parse_args()
print(vars(args))
# argumentos_variables1.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a', nargs=5)
args = parser.parse_args()
print(vars(args))
# argumentos_variables2.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a', nargs='?')
args = parser.parse_args()
print(vars(args))
# argumentos_variables3.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a', nargs='?')
args = parser.parse_args()
print(vars(args))
# argumentos_variables4.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a', nargs='+')
args = parser.parse_args()
print(vars(args))
# argumentos_variables5.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a')
parser.add_argument('-b', nargs=argparse.REMAINDER)
args = parser.parse_args()
print(vars(args))
== ejemplos
/via: [[https://docs.python.org/2/library/argparse.html#module-argparse]]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="Mostrar información de depuración", action="store_true")
args = parser.parse_args()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="Mostrar información de depuración", action="store_true")
parser.add_argument("-f", "--file", help="Nombre de archivo a procesar")
args = parser.parse_args()
# Aquí procesamos lo que se tiene que hacer con cada argumento
if args.verbose:
print "depuración activada!!!"
if args.file:
print "El nombre de archivo a procesar es: ", args.file