#!/usr/bin/python
import sys
print len(sys.argv), ' Parameters...'
= 1
c for par in sys.argv:
print 'Parameter ', c, ' : ', par
= c + 1
c
if (len(sys.argv) != 2) :
print "Just one parameter please"
"Wrong number of parameters")
sys.exit(
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 arraysys.argv
ofrece el arraysys.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
= argparse.ArgumentParser ()
parser "-i", "--input", type=ascii, nargs=1, help="Fichero de Entrada")
parser.add_argument ("-o", "--output", type=ascii, nargs=1, help="Fichero de Salida")
parser.add_argument (
= parser.parse_args()
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 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
argparser
nos permite procesar argumentos de la línea de comandos de forma muy fácil.
■