Trabajando con argumentos opcionales
Los argumentos opcionales brindan flexibilidad en las interfaces de línea de comandos. A diferencia de los argumentos posicionales, los argumentos opcionales:
- Tienen un prefijo de guiones (por lo general,
- para las formas cortas y -- para las formas largas).
- Pueden omitirse (el programa utilizará valores predeterminados si se proporcionan).
- Pueden proporcionarse en cualquier orden.
- Son ideales para opciones de configuración que no son esenciales para que el programa funcione.
Vamos a crear un programa que demuestre el uso de argumentos opcionales.
Crear un programa de saludo con argumentos opcionales
-
En el WebIDE, crea un nuevo archivo llamado greeting.py en el directorio /home/labex/project.
-
Agrega el siguiente código al archivo:
import argparse
## Create an argument parser
parser = argparse.ArgumentParser(description="A customizable greeting program")
## Add optional arguments
parser.add_argument("-n", "--name", default="World", help="The name to greet (default: World)")
parser.add_argument("-g", "--greeting", default="Hello", help="The greeting to use (default: Hello)")
parser.add_argument("-c", "--count", type=int, default=1, help="Number of times to display the greeting (default: 1)")
## Parse the arguments
args = parser.parse_args()
## Display the greeting
for _ in range(args.count):
print(f"{args.greeting}, {args.name}!")
-
Guarda el archivo.
-
Ejecuta el programa sin ningún argumento:
python /home/labex/project/greeting.py
- Deberías ver el saludo predeterminado:
Hello, World!
- Ahora intenta personalizar el saludo con argumentos opcionales:
python /home/labex/project/greeting.py --name Alice --greeting Hi
- Deberías ver el saludo personalizado:
Hi, Alice!
- También puedes usar las formas cortas de los argumentos:
python /home/labex/project/greeting.py -n Bob -g Hey -c 3
- Esto debería mostrar el saludo tres veces:
Hey, Bob!
Hey, Bob!
Hey, Bob!
Tipos de argumentos opcionales
argparse admite varios tipos de argumentos opcionales:
-
Argumentos de bandera (flag arguments): Banderas booleanas que están presentes o ausentes.
-
Argumentos con valores: Argumentos opcionales que toman valores.
Vamos a modificar nuestro programa de saludo para incluir un argumento de bandera:
-
Abre greeting.py en el WebIDE.
-
Agrega un argumento de bandera para mayúsculas:
import argparse
## Create an argument parser
parser = argparse.ArgumentParser(description="A customizable greeting program")
## Add optional arguments
parser.add_argument("-n", "--name", default="World", help="The name to greet (default: World)")
parser.add_argument("-g", "--greeting", default="Hello", help="The greeting to use (default: Hello)")
parser.add_argument("-c", "--count", type=int, default=1, help="Number of times to display the greeting (default: 1)")
parser.add_argument("-u", "--uppercase", action="store_true", help="Display the greeting in uppercase")
## Parse the arguments
args = parser.parse_args()
## Create the greeting message
message = f"{args.greeting}, {args.name}!"
## Convert to uppercase if requested
if args.uppercase:
message = message.upper()
## Display the greeting
for _ in range(args.count):
print(message)
-
Guarda el archivo.
-
Ejecuta el programa con la bandera de mayúsculas:
python /home/labex/project/greeting.py -n Charlie -u
- Deberías ver el saludo en mayúsculas:
HELLO, CHARLIE!
El parámetro action="store_true" significa que la bandera no toma un valor; está presente (True) o ausente (False).
Los argumentos opcionales hacen que tus interfaces de línea de comandos sean más flexibles y amigables con el usuario. Permiten a los usuarios personalizar el comportamiento de tu programa sin requerir que proporcionen cada pieza de información cada vez.
En el siguiente paso, veremos cómo combinar argumentos posicionales y opcionales en un solo programa.