sys.argv
En esencia, sys.argv () es una lista de todas las entradas de línea de comando. Cuando se ejecuta el script, puede alimentar su entrada de usuario de varias maneras, y una de esta manera es a través de la línea de comando. En esta primera instancia, supongamos que tenemos un script simple llamado Main.py.
Imprimir ("Hello World")Al ejecutar el script, vamos a agregar algunos argumentos de línea de comando además del nombre del script. Si tuviéramos que ejecutar el script, obtendríamos lo siguiente:
$ python3 main.Py que estás haciendo?Notas aquí que los argumentos de la línea de comando no interferían con el script en sí.
Entonces, ahora, modificemos un poco el script. Entonces, supongamos que ahora tenemos un script llamado Main.Py con el siguiente contenido:
Sys de importaciónSi tuviéramos que ejecutar el script, obtendríamos lo siguiente:
$ python3 main.pyComo puede ver, obtenemos una lista con un elemento porque solo lo suministramos con un elemento, el nombre del script. Ahora supongamos que le proporcionamos argumentos de entrada de línea de comandos ligeramente diferentes.
Sys de importaciónSi tuviéramos que ejecutar el script, obtendríamos lo siguiente:
$ python3 main.Py Hello WorldAhora, lo que sucede es que recupera todo lo que proporcionamos a través de la línea de comando o todos los argumentos de la línea de comandos proporcionados por el usuario. En mi caso, agregué 'Hello World' después del nombre del guión, y como tal, lo recuperó a la lista.
sys.Argv [0]
Sys.argv [0] es el primer argumento en la lista. En todos los casos, el primer argumento es siempre el nombre del guión.
Sys de importaciónAl ejecutar el script, escribiríamos lo siguiente:
$ python3 main.pysys.argv [n]
Alternativamente, es posible que desee recuperar un argumento de línea de comandos específico. Por ejemplo, es posible que desee recuperar la entrada del usuario a través de argumentos de línea de comandos al escribir un programa de Python. En este escenario, recuperaremos los primeros tres argumentos de la línea de comando.
Sys de importaciónAl ejecutar el script, escribiríamos lo siguiente, por ejemplo:
$ python3 main.Py Trevor Travis TimAquí, sys.Argv [1] es el segundo argumento de la línea de comando, mientras que SYS.Argv [2] es el tercer argumento de la línea de comando, y SYS.Argv [3] es el cuarto argumento de la línea de comando. Esto es así porque aunque el índice comienza en 0 y sys.argv [0] es el nombre del guión.
Entonces, ¿qué pasaría si se esperara que el usuario ingresara un número de entradas y no supiéramos cuántas entradas había? Supongamos que se escribió el siguiente script:
Sys de importaciónAl ejecutar el script, escribiríamos lo siguiente, por ejemplo:
$ python3 main.Py hola Trevor Travis y TimAquí, sys.argv [1:] significa que todos los valores del sys.Argv [1] se usan hasta el final de la lista. En este caso, podemos agregar tantos argumentos de línea de comando como queramos.
Instrumentos de cuerda
Tenga en cuenta que todos los valores capturados por la variable SYS.argv son cuerdas. Así que supongamos que queríamos agregar tres números que ingresa el usuario.
Sys de importaciónSi tuviéramos que ejecutar el script, obtendríamos lo siguiente:
$ python3 main2.Py 3 4 5Lo que obtenemos es un typeError. Esto se debe a que todos los valores obtenidos de la lista son valores de "cadena", mientras que requerimos valores enteros para agregar. Para corregir esto, tendríamos que convertir las cuerdas a enteros:
Sys de importaciónSi tuviéramos que ejecutar el script, obtendríamos lo siguiente:
$ python3 main2.Py 3 4 5Agregamos int (sys.arg [n]) aseguró que convirtimos la cadena en un entero.
Sys.errores de argv
Uno de los errores más comunes que se lanzan (cuando no usamos SYS.Argv [1:] sino más bien especificar el enésimo valor usando SYS.Argv [n]) es el de un indexError (índice de lista fuera de rango). Lo que significa este error es que los argumentos de la línea de comando no se especificaron, y para evitar este error, debemos tomar algunos pasos de precaución:
Sys de importaciónAl ejecutar el script, escribiríamos lo siguiente, por ejemplo:
$ python3 main.Py Travis Trevor TimPara evitar el error, debemos ajustar la longitud de los argumentos de la línea de comando. En el ejemplo anterior, tenemos tres nombres y un nombre de script, lo que significa que hay un total de 4 valores. Por lo tanto, decimos que si la longitud es mayor de 4 o menos de 4, solicite al usuario que ingrese tres nombres; más, imprima los tres nombres.
El módulo SYS es muy importante, ya que permite la interacción con el intérprete de Python. En particular, el sistema variable.Argv es una lista que contiene todos los argumentos de la línea de comandos de los usuarios. Sys.argv [0] define el nombre del script en todos los casos. Aunque sys.Argv () se utiliza muy comúnmente para reunir argumentos de línea de comando, otra forma aún mejor de reunir argumentos de línea de comandos es mediante el uso de Argparse. Pero esa es una historia para otro día!