Passer des variables lors de l'exécution
Je souhaite passer des variables en python lors de l'exécution
python add2values.py 123 124
ensuite dans le script python, il va prendre ces 2 valeurs et les ajouter ensemble.
OU
python add2values.py a=123 b=124
ensuite dans le script python, il va prendre ces 2 valeurs et les ajouter ensemble.
- Avez-vous essayé quelque chose encore?
- diveintopython.net/scripts_and_streams/...
- Essayez de regarder les stackoverflow.com/questions/9036013/... par exemple.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
sys.argv
test.py
Maintenant exécuter le script ci-dessus comme suit:
Il y a quelques manières de traiter les arguments de ligne de commande.
L'on est, comme cela a été suggéré,
sys.argv
: un tableau de chaînes de caractères à partir des arguments en ligne de commande. Utilisez cette option si vous souhaitez effectuer arbitraire des opérations sur les différents types d'arguments. Vous pouvez lancer les deux premiers arguments en nombres entiers et de imprimer leur somme avec le code ci-dessous:Bien sûr, cela ne permet pas de vérifier si l'utilisateur a entrée des chaînes ou des listes ou des entiers et donne le risque d'une
TypeError
. Cependant, pour une gamme d'arguments de ligne de commande, c'est probablement votre meilleur pari - manuellement prendre soin de chaque cas.Si votre script/programme a fixé des arguments et que vous souhaitez avoir plus de flexibilité (à court d'options, de longs, des textes d'aide), il vaut la peine de vérifier la optparse et
argparse
(nécessite Python 2.7 ou plus tard) modules. Ci-dessous, quelques extraits de code concernant ces deux modules de prises de réelles questions sur ce site.optparse
, utilisable avec les versions antérieures de Python, a la même syntaxe:Et il en est de même
getopt
si vous préférez, C-syntaxe...La argparse module vous permet de vous écrire simple ligne de commande interfaces sans trop d'effort et est très flexible. Il va gérer les choses comme vérifier les variables d'entrée sont le type que vous spécifiez et la rendre plus facile l'écriture de votre programme.
La premier exemple montre même un programme similaire qui accepte une liste de chaînes à la somme.
Je pense que tu veux dire passage de paramètre par argument de ligne de commande. Le code:
Vous pouvez faire ceci:
sys.argv(1)
tente d'appeler leargv
fonction avec1
comme paramètre:TypeError: 'list' object is not callable.
Utiliser le
sys
module. Cela va ajouter tous les arguments donnés:map()
devra être utilisé parce que tous les éléments danssys.argv
sont des chaînes de caractères. Nous avons également à la tranche de la liste parce que le premier élément est le nom du script.Lors de l'exécution à: