Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Argumentos mediante la consola Ignacio Vilieri Primer Semestre de 2021 Usando sys.argv 1 Recap Funciones I Recordemos una de las primeras funciones que definimos: 1 def kilometros_a_millas(d:float) -> float: 2 ''' Convierte una longitud en km a millas. [...] ''' 3 vr:float = d * 0.621371 4 return vr 5 6 print(kilometros_a_millas (123.4)) I Podemos guardar nuestro código como kilometros_a_millas.py mediante: I File > Save as I Ahora bien, ¿cómo podríamos ejecutar nuestro programa desde la línea de comandos? La línea de comandos es una consola parecida a la de ipython, que nos permite ejecutar programas en el sistema operativo de la computadora (MacOS, Windows, Linux). 2 Línea de comandos I Primero, abrimos nuestra línea de comandos. I macOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOSmacOS: https://www.idownloadblog.com/2019/04/19/ ways-open-terminal-mac/. I WindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindowsWindows: https: //www.lifewire.com/how-to-open-command-prompt-2618089. I LinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinux: https://maker.pro/linux/tutorial/ basic-linux-commands-for-beginners. I Segundo, navegamos hasta llegar al directorio de trabajo en el cual guardamos nuestro programa. Para ello podemos usar el comando cd, que nos permite cambiar al directorio que queramos. La sintaxis para ello es: 1 $ cd directorio\del\archivo I Por ejemplo: 1 $ cd C:\Users\vilieri.i\Desktop 3 https://www.idownloadblog.com/2019/04/19/ways-open-terminal-mac/ https://www.idownloadblog.com/2019/04/19/ways-open-terminal-mac/ https://www.lifewire.com/how-to-open-command-prompt-2618089 https://www.lifewire.com/how-to-open-command-prompt-2618089 https://maker.pro/linux/tutorial/basic-linux-commands-for-beginners https://maker.pro/linux/tutorial/basic-linux-commands-for-beginners Línea de comandos I Una vez que nos encontremos situados en el directorio en el que se encuentra nuestro programa, podemos ejecutarlo usando uno de estos comandos (dependiendo de cómo fue instalado Python en su computadora): 1 $ python filename.py 1 $ python3 filename.py I LinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLink: https://realpython.com/run-python-scripts/ #how-to-run-python-scripts-using-the-command-line I Siendo así, sería muy útil poder pasarle argumentos a nuestro programa trabajando directamente desde la línea de comandos. 4 https://realpython.com/run-python-scripts/#how-to-run-python-scripts-using-the-command-line https://realpython.com/run-python-scripts/#how-to-run-python-scripts-using-the-command-line Argumentos en línea de comandos I Para ello utilizaremos la lista argv de la biblioteca sys. I sys.argv permite trabajar con “argumentos en línea de comandos”, que son aquellos valores que son pasados a nuestro programa cuando se ejecuta directo desde la consola. I En este sentido, sys.argv devuelve una lista que contiene: 1. En la primera posición, el nombre de nuestro programa 2. En las posiciones subsiguientes, los argumentos que le compartamos mediante consola I El siguiente programa args.py ejemplifica el funcionamiento de sys.argv: 1 import sys 2 3 print("Nuestro programa se llama", sys.argv [0]) 5 Usando sys.argv I Entonces, si ejecutamos por consola: 1 $ python args.py 2 3 > Nuestro programa se llama args.py I Como mencionamos, el primer valor que se almacena en sys.argv es el nombre de nuestro programa (en este caso llamado args.py) I Genial! Pero, ¿cómo podemos ahora pasarle a nuestro programa argumentos directo desde la línea de comandos? I Para ello solo tenemos que indicarlos luego de elegir el programa a ejecutar: 1 python filename.py [args del programa] I LinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLinkLink: https: //www.geeksforgeeks.org/how-to-use-sys-argv-in-python/ 6 https://www.geeksforgeeks.org/how-to-use-sys-argv-in-python/ https://www.geeksforgeeks.org/how-to-use-sys-argv-in-python/ Ejecución I Veámoslo aumentando el ejemplo anterior. I Definamos ahora el programa args.py de la siguiente manera: 1 import sys 2 3 print("Nuestro programa se llama", sys.argv [0]) 4 print("El 1er argumento es", sys.argv [1]) 5 print("El 2do argumento es", sys.argv [2]) I Si ejecutamos nuevamente por consola incluyendo, por ejemplo, dos argumentos: 1 $ python args.py 5 "utdt" 2 3 > Nuestro programa se llama args.py 4 > El 1er argumento es 5 5 > El 2do argumento es utdt I ImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportanteImportante: Nótese que los elementos en sys.argv son almacenados en formato str, y por ende deberíamos convertirlos (dentro de nuestro programa) al formato que necesitemos. 7 Uniendo todo I Podemos entonces redefinir nuestro programa kilometros_a_millas.py para que acepte argumentos directamente desde la consola. 1 import sys 2 3 def kilometros_a_millas(d:float) -> float: 4 ''' Convierte una longitud en km a millas. [...] ''' 5 vr:float = d * 0.621371 6 return vr 7 8 km:float = float(sys.argv [1]) 9 print(kilometros_a_millas(km)) I Recuerden que los elementos de sys.argv son almacenados como str y por ende necesitamos convertir el formato de nuestro argumento, en este caso, a float. (vea línea 8) 8 Wrap-up I Finalmente, lo ejecutamos desde la línea de comandos y obtenemos el resultado esperado: 1 $ python kilometros_a_millas.py 1.0 2 3 > 0.621371 I Veamos el paso a paso: 1. Ejecutamos nuestro programa desde la línea de comandos indicando como argumento 1.0. 2. En nuestro programa: 2.1 Se importa la bilbioteca sys y se define la función kilometros_a_millas 2.2 Se toma el argumento del programa (’1.0’) almacenado en sys.argv[1] en formato str, se lo convierte a float, y se lo almacena en la variable km. 2.3 Se ejecuta la función kilometros_a_millas tomando como argumento el valor de km (el float 1.0) e imprime el resultado obtenido. 3. Vemos por pantalla el resultado de nuestro programa. 9
Compartir