目次
1. Uso básico de los argumentos de línea de comandos en Python
¿Qué son los argumentos de línea de comandos?
Cuando se ejecuta un programa en Python, la información adicional que se pasa junto con el comando de ejecución se denomina «argumentos de línea de comandos». Esto permite cambiar el comportamiento del programa de manera flexible y pasar datos desde el exterior de forma sencilla. Por ejemplo, al pasar un nombre de archivo o un valor de configuración como argumento, se puede modificar dinámicamente el contenido del programa.Obtener argumentos de línea de comandos con sys.argv
En Python, se puede usar el módulo estándar sys
para obtener los argumentos de línea de comandos. sys.argv
es una variable que almacena los argumentos en forma de lista. El primer elemento de la lista (sys.argv[0]
) es el nombre del script ejecutado, y los elementos posteriores son los valores pasados como argumentos.Código de ejemplo: programa de cálculo sencillo
import sys
def main():
if len(sys.argv) < 3:
print("Error: se requieren 2 argumentos")
return
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
print(f"Suma: {num1 + num2}")
if __name__ == "__main__":
main()
El programa anterior suma dos números pasados desde la línea de comandos y los muestra. Ejemplo de ejecución:$ python script.py 3 5
Suma: 8.0

2. Procesamiento avanzado de argumentos con el módulo argparse
Conceptos básicos de argparse
Con sys.argv
es posible obtener argumentos básicos, pero cuando el número de argumentos aumenta o se necesitan argumentos opcionales o banderas (como --verbose
), el módulo estándar argparse
resulta más conveniente. Este módulo permite analizar argumentos y generar mensajes de error automáticamente de forma sencilla.Creación de un analizador de argumentos
Para usarargparse
, primero se crea un analizador de argumentos. Luego, se configuran los argumentos en el analizador y finalmente se procesan los argumentos de la línea de comandos.Código de ejemplo: uso básico de argparse
import argparse
def main():
parser = argparse.ArgumentParser(description='Este es un programa de ejemplo')
parser.add_argument('arg1', help='Primer argumento')
parser.add_argument('arg2', type=float, help='Segundo argumento numérico')
args = parser.parse_args()
print(f"arg1 = {args.arg1}")
print(f"arg2 = {args.arg2}")
if __name__ == "__main__":
main()
Este programa recibe dos argumentos: arg1
se trata como una cadena, y arg2
como un número, ambos se muestran después del análisis.$ python script.py test 5.5
arg1 = test
arg2 = 5.5
Procesamiento de argumentos opcionales y banderas
Una de las funciones más potentes deargparse
es la posibilidad de manejar argumentos opcionales y banderas. Esto permite ejecutar código solo cuando se especifica un argumento y ofrecer salidas detalladas (como con la bandera --verbose
).Código de ejemplo: uso de argumentos opcionales y banderas
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true', help='Mostrar salida detallada')
parser.add_argument('numbers', nargs='+', type=float, help='Lista de números')
args = parser.parse_args()
total = sum(args.numbers)
if args.verbose:
print(f"Detalles del cálculo: la suma de {args.numbers} es {total}")
else:
print(f"Suma: {total}")
if __name__ == "__main__":
main()
En este programa, si se especifica la bandera --verbose
, se mostrará una salida detallada; de lo contrario, se mostrará un resultado más simple.$ python script.py 1 2 3 --verbose
Detalles del cálculo: la suma de [1.0, 2.0, 3.0] es 6.0

3. Manejo de errores y validación de argumentos
Validación de la cantidad y el tipo de argumentos
Al trabajar con argumentos de línea de comandos, es importante mostrar mensajes de error cuando el usuario no proporciona los argumentos correctamente para evitar un mal funcionamiento del programa. Verificar la cantidad y el tipo de argumentos permite mantener la estabilidad del programa.Código de ejemplo: validación de cantidad y tipo de argumentos
import sys
def main():
if len(sys.argv) != 3:
print("Error: se requieren 2 argumentos")
return
try:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
except ValueError:
print("Error: los argumentos deben ser numéricos")
return
print(f"Suma: {num1 + num2}")
if __name__ == "__main__":
main()
En este programa, si la cantidad de argumentos no es tres (nombre del script + 2 números), se mostrará un mensaje de error. También se mostrará un error si los argumentos no son numéricos.4. Casos de uso prácticos y aplicaciones
Ejemplo de creación de una herramienta de línea de comandos
Un ejemplo práctico de uso de argumentos de línea de comandos es crear herramientas que realicen operaciones de archivos o procesamiento de datos.Código de ejemplo: herramienta para contar líneas de un archivo
import argparse
def main():
parser = argparse.ArgumentParser(description='Herramienta para contar líneas de un archivo')
parser.add_argument('filename', help='Nombre del archivo a contar')
args = parser.parse_args()
try:
with open(args.filename, 'r') as file:
lines = file.readlines()
print(f"Número de líneas en {args.filename}: {len(lines)}")
except FileNotFoundError:
print(f"Error: el archivo {args.filename} no se encontró")
if __name__ == "__main__":
main()
Esta herramienta cuenta y muestra el número de líneas en el archivo especificado.$ python count_lines.py example.txt
Número de líneas en example.txt: 100
5. Conclusión
Aprender a manejar los argumentos de línea de comandos en Python permite dotar de flexibilidad a los programas. Desde el método sencillo consys.argv
hasta el manejo avanzado con argparse
, es fundamental elegir la técnica adecuada según las necesidades. Además, incorporar validación de argumentos y manejo de errores permite crear programas más robustos.