J'utilise python pour créer les paramètres de mon projet, mais j'ai besoin d'aide pour obtenir les arguments de ligne de commande.
J'ai essayé ceci sur le terminal:
$python myfile.py var1 var2 var3
Dans mon fichier Python, je souhaite utiliser toutes les variables entrées.
Le didacticiel Python l'explique :
import sys
print(sys.argv)
Plus spécifiquement, si vous exécutez python example.py one two three
:
>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']
import sys
sys.argv[1:]
vous donnera une liste d'arguments (n'incluant pas le nom du fichier python)
Je recommande fortement argparse
qui est fourni avec Python 2.7 et versions ultérieures.
Le module argparse
réduit le code de la plaque de la chaudière et le rend plus robuste, car il gère tous les cas d'utilisation standard (y compris les sous-commandes), génère l'aide et l'utilisation à votre place, vérifie et désinfecte les entrées de l'utilisateur. vous utilisez l'approche sys.argv
. Et c'est gratuit (intégré).
Voici un petit exemple:
import argparse
parser = argparse.ArgumentParser("simple_example")
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
args = parser.parse_args()
print(args.counter + 1)
et la sortie pour python prog.py -h
usage: simple_example [-h] counter
positional arguments:
counter counter will be increased by 1 and printed.
optional arguments:
-h, --help show this help message and exit
et pour python prog.py 1
comme on peut s'y attendre:
2
Code Python:
import sys
# main
param_1= sys.argv[1]
param_2= sys.argv[2]
param_3= sys.argv[3]
print 'Params=', param_1, param_2, param_3
Invocation:
$python myfile.py var1 var2 var3
Sortie:
Params= var1 var2 var3
Vous pouvez utiliser sys.argv
pour obtenir les arguments sous forme de liste.
Si vous devez accéder à des éléments individuels, vous pouvez utiliser
sys.argv[i]
où i
est un index, 0
vous donnera le nom de fichier python en cours d'exécution. Tous les index suivants sont les arguments passés.
Si vous l'appelez comme ceci: $ python myfile.py var1 var2 var3
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
Semblable aux tableaux, vous avez aussi sys.argv[0]
qui est toujours le répertoire de travail actuel.
Quelques choses supplémentaires que je peux penser.
Comme @allsyed a déclaré que sys.argv fournit une liste de composants (y compris le nom du programme), donc si vous souhaitez connaître le nombre d'éléments passés via la ligne de commande, vous pouvez utiliser len () pour le déterminer. Sur cette base, vous pouvez concevoir des messages d'erreur/d'exception si l'utilisateur n'a pas transmis un nombre spécifique de paramètres.
De plus, si vous cherchez une meilleure façon de gérer les arguments en ligne de commande, je vous suggérerais de regarder https://docs.python.org/2/howto/argparse.html