Paso de argumentos por la línea de comandos

Anuncio
Universidad de Costa Rica | Escuela de Ingeniería Eléctrica
IE-0117 Programación Bajo Plataformas Abiertas
Paso de argumentos por la línea de comandos
Es posible enviar información a un programa al ejecutarlo usando la línea de comandos. Por ejemplo, al ejecutar el
comando
$ chmod 644 Documentos/proyecto.odt
el programa chmod recibe dos argumentos: ’644’ y ’Documentos/proyecto.odt’.
La mayoría de los lenguajes de programación proporcionan herramientas para poder acceder estos argumentos y
Python no es la excepción. Este lenguaje proporciona una variable especial llamada argv, que se encuentra dentro del
módulo sys. La variable argv es una lista que almacena todos los argumentos pasados por la línea de comandos. El
primer elemento (índice 0) de la lista corresponde al nombre del programa, tal como lo digitó el usuario. El segundo
elemento (índice 1) corresponde al primer argumento, el tercer elemento (índice 2) corresponde al segundo argumento,
etc. Por ejemplo, si se llama al programa cuadratica.py de la siguiente forma:
$ ./cuadratica.py 104 -53 10
la variable argv contendrá la siguiente información:
argv[0]
argv[1]
argv[2]
argv[3]
=
=
=
=
"./cuadratica.py"
"104"
"-53"
"10"
Todos los valores almacenados en argv son cadenas de caracteres. Es necesario convertir estos valores a los tipos
adecuados antes de poder efectuar operaciones con ellos:
import sys
a = float(sys.argv[1])
b = float(sys.argv[2])
c = float(sys.argv[3])
delta = b**2 – 4*a*c
1
IE-0117 Programación Bajo Plataformas Abiertas
Paso de argumentos por la línea de comandos
Comprobación del número de argumentos introducidos por el usuario
Si el usuario no introduce la cantidad de argumentos correcta el programa no funcionará adecuadamente. Si se
trata de leer un elemento de una lista que no existe, Python generará un error y el programa finalizará. Por esta razón
es necesario comprobar la cantidad de argumentos que el usuario pasa al programa. Si esta cantidad no es correcta,
entonces el programa debe finalizar e imprimir un mensaje de error. El código que se muestra a continuación finaliza el
programa si el usuario no introduce exactamente 3 argumentos:
import sys
if len(sys.argv) != 4:
print “Número de argumentos ”incorrecto
print “Uso: %s A B ”C % sys.argv[0]
sys.exit(1)
La función exit() del módulo sys finaliza el programa, retornando al shell el código indicado entre los paréntesis.
Si bien es cierto este control de errores es muy básico, su uso puede evitarle muchos problemas tanto al programador
como a los usuarios, por lo que siempre debe incluirse en los programas.
2
Descargar