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