système.argv en python

système.argv en python
Le module SYS se compose de fonctions et de variables qui interagissent fortement avec l'interprète. Le module sys est préchargé en python et ne nécessite aucune installation. Parmi les nombreuses fonctions et variables figurent sys.argv (). Système.argv () est utilisé pour collecter une entrée utilisateur de ligne de commande. Dans ce tutoriel, nous apprendrons sur SYS.argv (), et ses utilisations communes.

système.argv

Essentiellement, sys.argv () est une liste de toutes les entrées de ligne de commande. Lorsque le script est exécuté, vous pouvez alimenter sa entrée de l'utilisateur de différentes manières, et une telle manière est via la ligne de commande. Dans ce premier cas, supposons que nous avons un simple script appelé Main.py.

Imprimer («Hello World»)

Lors de l'exécution du script, nous allons ajouter quelques arguments de ligne de commande en plus du nom du script. Si nous devions exécuter le script, nous obtiendrions ce qui suit:

$ python3 Main.py qu'est-ce que tu fais?
Bonjour le monde

Vous remarquez ici que les arguments de ligne de commande n'ont pas interféré avec le script lui-même.

Alors, maintenant, modifions un peu le script. Alors, supposons que maintenant nous avons un script appelé Main.py avec le contenu suivant:

importer sys
imprimer (sys.argv)

Si nous devions exécuter le script, nous obtiendrions ce qui suit:

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

Comme vous pouvez le voir, nous obtenons une liste avec un élément car nous ne l'avons fourni qu'un seul élément, le nom du script. Supposons maintenant que nous lui fournissons des arguments d'entrée de ligne de commande légèrement différents.

importer sys
imprimer (sys.argv)

Si nous devions exécuter le script, nous obtiendrions ce qui suit:

$ python3 Main.py bonjour monde
['principal.Py, "Hello," World ']

Maintenant, ce qui se passe, c'est qu'il récupère tout ce que nous avons fourni via la ligne de commande ou tous les arguments de ligne de commande fournis par l'utilisateur. Dans mon cas, j'ai ajouté «Hello World» après le nom du script, et en tant que tel, il l'a récupéré sur la liste.

système.argv [0]

Système.Argv [0] est le premier argument de la liste. Dans tous les cas, le premier argument est toujours le nom du script.

importer sys
name_of_script = sys.argv [0]
print (name_of_script)

Lors de l'exécution du script, nous tapions ce qui suit:

$ python3 Main.py
principal.py

système.argv [n]

Alternativement, vous souhaiterez peut-être récupérer un argument de ligne de commande spécifique. Par exemple, vous souhaiterez peut-être récupérer les entrées de l'utilisateur via des arguments de ligne de commande lors de la rédaction d'un programme Python. Dans ce scénario, nous récupérerons les trois premiers arguments de ligne de commande.

importer sys
name1 = sys.Argv [1]
name2 = sys.Argv [2]
name3 = sys.Argv [3]
print ("Hello", name1, ',', name2, 'et', name3)

Lors de l'exécution du script, nous tapions ce qui suit par exemple:

$ python3 Main.Py Trevor Travis Tim
Bonjour Trevor, Travis et Tim

Ici, sys.Argv [1] est le deuxième argument de ligne de commande, tandis que sys.Argv [2] est le troisième argument de la ligne de commande et sys.Argv [3] est le quatrième argument de la ligne de commande. Il en est ainsi parce que bien que l'index commence à 0 et sys.argv [0] est le nom du script.

Et si l'utilisateur devait saisir le nombre de normes et nous ne savions pas combien d'entrées il y avait? Supposons que le script suivant a été écrit:

importer sys
list = sys.Argv [1:]
pour la valeur dans la liste:
Imprimer (valeur)

Lors de l'exécution du script, nous tapions ce qui suit par exemple:

$ python3 Main.py Bonjour Trevor Travis et Tim
Bonjour
Trevor
Travis
et
Tim

Ici, sys.Argv [1:] signifie que toutes les valeurs de SYS.Argv [1] sont utilisés jusqu'à la fin de la liste. Dans ce cas, nous pouvons ajouter autant d'arguments de ligne de commande que nous le souhaitons.

Cordes

Veuillez noter que toutes les valeurs capturées par le système variable.Argv sont des cordes. Supposons donc que nous voulions ajouter trois nombres que l'utilisateur entre.

importer sys
num1 = sys.Argv [1]
num2 = sys.Argv [2]
num3 = sys.Argv [3]
list = [num1, num2, num3]
Total = somme (liste)
Imprimer (total)

Si nous devions exécuter le script, nous obtiendrions ce qui suit:

$ python3 main2.py 3 4 5
TypeError: type (s) d'opérande non pris en charge pour +: 'int' et 'str'

Ce que nous obtenons, c'est une énergie. En effet. Afin de corriger cela, nous devions convertir les cordes en entiers:

importer sys
num1 = int (sys.Argv [1])
num2 = int (sys.Argv [2])
num3 = int (sys.Argv [3])
list = [num1, num2, num3]
Total = somme (liste)
Imprimer (total)

Si nous devions exécuter le script, nous obtiendrions ce qui suit:

$ python3 main2.py 3 4 5
12

Nous avons ajouté Int (sys.arg [n]) s'est assuré que nous convertissions la chaîne en un entier.

Système.erreurs argv

L'une des erreurs les plus courantes qui sont lancées (lorsque nous n'utilisons pas SYS.Argv [1:] mais spécifiez plutôt la nth de valeur en utilisant SYS.argv [n]) est celui d'une indexerror (index de liste hors de portée). Ce que cette erreur signifie, c'est que les arguments de ligne de commande n'ont pas été spécifiés, et afin d'éviter cette erreur, nous devons prendre quelques étapes de précaution:

importer sys
Si Len (Sys.argv) 4:
imprimer ("Veuillez entrer trois noms")
Si Len (Sys.arv) == 4:
name1 = sys.Argv [1]
name2 = sys.Argv [2]
ame3 = sys.Argv [3]
imprimer ("bonjour", name1)
print ("bonjour", nom2)
imprimer ("bonjour", nom3)

Lors de l'exécution du script, nous tapions ce qui suit par exemple:

$ python3 Main.Py Travis Trevor Tim
Bonjour Travis
Bonjour Trevor
Bonjour Tim

Afin d'éviter l'erreur, nous devons ajuster la longueur des arguments de ligne de commande. Dans l'exemple précédent, nous avons trois noms et un nom de script, ce qui signifie qu'il y a un total de 4 valeurs. Ainsi, nous disons que si la longueur est supérieure à 4 ou moins de 4, demandez à l'utilisateur de saisir trois noms; sinon, imprimez les trois noms.

Le module sys est très important car il permet une interaction avec l'interpréteur Python. En particulier, le système variable.Argv est une liste qui contient tous les arguments de ligne de commande entrés des utilisateurs. Système.Argv [0] définit le nom du script dans tous les cas. Bien que sys.argv () est très couramment utilisé pour rassembler les arguments de ligne de commande, une autre manière encore meilleure de rassembler les arguments de ligne de commande est en utilisant Argparse. Mais c'est une histoire pour un autre jour!