54 votes

Comment vérifier si un argument de la ligne de commande a été défini ?

Je peux appeler mon script comme ceci :

 python D:\myscript.py 60

Et dans le script je peux faire :

 arg = sys.argv[1]
foo(arg)

Mais comment pourrais-je tester si l'argument a été entré dans l'appel de ligne de commande ? Je dois faire quelque chose comme ça :

 if isset(sys.argv[1]):
    foo(sys.argv[1])
else:
    print "You must set argument!!!"

67voto

khachik Points 12589

len(sys.argv) > 1

61voto

katrielalex Points 40655

N'utilisez pas sys.argv pour gérer l'interface de ligne de commande ; il y a un module pour faire ça : argparse .

Vous pouvez marquer un argument comme requis en passant required=True à add_argument .

 import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()

30voto

chris Points 2493
if len(sys.argv) < 2:
    print "You must set argument!!!"

8voto

Miguel Armenta Points 51
if len(sys.argv) == 1:
   print('no arguments passed')
   sys.exit()

Cela vérifiera si des arguments ont été transmis. S'il n'y a pas d'arguments, il quittera le script, sans exécuter le reste.

6voto

DNS Points 17577

Si vous utilisez Python 2.7/3.2, utilisez le module argparse Sinon, utilisez le module optparse Le module s'occupe de l'analyse de la ligne de commande et vous pouvez vérifier si le nombre d'arguments positionnels correspond à ce que vous attendez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X