sys.Argv en Python

sys.Argv en Python
El módulo SYS consta de funciones y variables que interactúan fuertemente con el intérprete. El módulo SYS viene precargado en Python y no requiere ninguna instalación. Entre las muchas funciones y variables se encuentran el sistema.argv (). Sys.argv () se utiliza para recopilar la entrada del usuario de la línea de comando. En este tutorial, estaremos aprendiendo sobre SYS.argv (), y sus usos comunes.

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?
Hola Mundo

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ón
Imprimir (SYS.argv)

Si tuviéramos que ejecutar el script, obtendríamos lo siguiente:

$ python3 main.py
['principal.py ']

Como 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ón
Imprimir (SYS.argv)

Si tuviéramos que ejecutar el script, obtendríamos lo siguiente:

$ python3 main.Py Hello World
['principal.Py, "Hola," Mundo ']

Ahora, 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ón
name_of_script = sys.Argv [0]
print (name_of_script)

Al ejecutar el script, escribiríamos lo siguiente:

$ python3 main.py
principal.py

sys.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ón
nombre1 = sys.Argv [1]
nombre2 = sys.Argv [2]
nombre3 = sys.Argv [3]
Imprimir ("Hola", Name1, ',', Name2, 'y', Name3)

Al ejecutar el script, escribiríamos lo siguiente, por ejemplo:

$ python3 main.Py Trevor Travis Tim
Hola Trevor, Travis y Tim

Aquí, 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ón
Lista = SYS.Argv [1:]
Para el valor en la lista:
Imprimir (valor)

Al ejecutar el script, escribiríamos lo siguiente, por ejemplo:

$ python3 main.Py hola Trevor Travis y Tim
Hola
Trevor
Traver
y
Tim

Aquí, 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ón
num1 = sys.Argv [1]
num2 = sys.Argv [2]
num3 = sys.Argv [3]
list = [num1, num2, num3]
Total = suma (lista)
Imprimir (total)

Si tuviéramos que ejecutar el script, obtendríamos lo siguiente:

$ python3 main2.Py 3 4 5
TypeError: tipos de operando no compatibles para +: 'int' y 'str'

Lo 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ón
num1 = int (sys.argv [1])
num2 = int (sys.Argv [2])
num3 = int (sys.Argv [3])
list = [num1, num2, num3]
Total = suma (lista)
Imprimir (total)

Si tuviéramos que ejecutar el script, obtendríamos lo siguiente:

$ python3 main2.Py 3 4 5
12

Agregamos 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ón
Si len (sys.argv) 4:
Imprimir ("Ingrese tres nombres")
Si len (sys.arv) == 4:
nombre1 = sys.Argv [1]
nombre2 = sys.Argv [2]
AME3 = SYS.Argv [3]
Imprimir ("Hola", Nombre1)
Imprimir ("Hola", Name2)
Imprimir ("Hola", Nombre3)

Al ejecutar el script, escribiríamos lo siguiente, por ejemplo:

$ python3 main.Py Travis Trevor Tim
Hola Travis
Hola Trevor
Hola Tim

Para 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!