#!/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
sysademás del arraysys.argvofrece el arraysys.argv_origque 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 scriptes 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
syspara retornar los argumentos de la línea de comandos ensys.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
argparsernos permite procesar argumentos de la línea de comandos de forma muy fácil.
■
