Parámetros Línea de Comandos. Python
SOLUCIONARIO
Parámetros Línea de Comandos. Python
2025-09-28
Por
Occam's Razor

#!/usr/bin/python

import sys

print len(sys.argv), ' Parameters...'

c = 1
for par in sys.argv:
    print 'Parameter ', c, ' : ', par
    c = c + 1

if (len(sys.argv) != 2) :
    print "Just one parameter please"
    sys.exit("Wrong number of parameters")

print "Hello ", sys.argv[1]

Python requiere el uso del módulo del sistema para acceder a los parámetros que pasamos a nuestro script usando la línea de comandos. La línea import sys al principio del script se encarga de ello.

Una vez importado el módulo sys, los parámetros son accesibles a través de la lista sys.argv. El número de parámetros los podemos determinar con la función genérica len que nos devuelve el tamaño de la lista que pasamos como parámetro.

SOY NOVATO

El módulo sys además del array sys.argv ofrece el array sys.argv_orig que contiene la línea de comandos original con la que se invoca el intérprete. Si nuestro script usa el #! para que el script sea ejecutable directamente, sys.argv_orig[0] contendrá el nombre del intérprete Python usado para ejecutar el programa.

Como en C, Python nos almacena el nombre del programa en el primer elemento del array, si bien no es posible cambiar el nombre del programa directamente manipulando esa entrada del array.

SABIAS QUÉ?

Un truco habitual usado por los programadores Python para modificar el nombre del proceso (y que no se vea como python script es utilizar la siguiente línea de comandos:

exec -a "custom_process_name" python myscript.py

Procesar los argumentos recibidos por el programa en Python es bastante sencillo, aún así, existen diversos módulos que pueden hacernos la vida mucho más sencilla. Uno de los más populares es argparse y este es un sencillo ejemplo utilizando este módulo:

import argparse

parser = argparse.ArgumentParser ()
parser.add_argument ("-i", "--input",  type=ascii, nargs=1, help="Fichero de Entrada")
parser.add_argument ("-o", "--output", type=ascii, nargs=1, help="Fichero de Salida")

args = parser.parse_args()

print (F"Copiando {args.input} a {args.output}")

Como podéis ver es muy fácil de utilizar, nos permite definir los parámetros largos y cortos como queramos y genera los mensajes de uso y ayuda automáticamente, es decir, si el programa se ejecuta con algún tipo de error o se invoca con los flags -h o --help muestra un mensaje indicando la forma de usar el programa de forma automática.

$ ./cmdline-argparse.py --help
usage: cmdline-argparse.py [-h] [-i INPUT] [-o OUTPUT]

options:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        Fichero de Entrada
  -o OUTPUT, --output OUTPUT
                        Fichero de Salida

Como suele ser habitual en estos casos, arpparser ofrece infinidad de opciones para procesar cualquier tipo de línea de parámetros, desde distintos tipos de datos hasta permitirnos especificar argumentos opcionales o posicionales. Una maravilla.

Resumen

  • Python utiliza el módulo sys para retornar los argumentos de la línea de comandos en sys.argv
  • sys.argv[0] contiene el nombre del script. Si bien puede modificarse, ese cambio no se reflejará en el nombre del proceso visto por el sistema
  • El módulo argparser nos permite procesar argumentos de la línea de comandos de forma muy fácil.

SOBRE Occam's Razor
Somos una revista libre que intenta explicar de forma sencilla conceptos tecnológicos y científicos de los que no podemos escapar. Al final, todo es más fácil de lo que parece!

 
Tu publicidad aquí :)