comment puis-je imprimer les informations d'aide si aucun argument n'est transmis au script python?
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
ce qui me manque, c'est la ligne if arg == ""
que je ne sais pas comment exprimer :(
if len(sys.argv) == 1:
# Print usage...
Le premier élément de sys.argv est toujours soit le nom du script lui-même, soit une chaîne vide. Si sys.argv n'a qu'un seul élément, il ne doit y avoir aucun argument.
if len(sys.argv)<2:
Le nom du programme est toujours dans sys.argv [0]
Comme d'autres l'ont dit, vous pouvez vérifier si des arguments ont été transmis:
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
Cependant, il existe un module Python appelé OptParse qui a été développé explicitement pour analyser les arguments de ligne de commande lors de l'exécution d'un script. Je suggérerais d'examiner cela, car il est un peu plus "conforme aux normes" (comme dans, c'est la méthode attendue et acceptée d'analyse en ligne de commande au sein de la communauté Python).
Ce qui suit est un moyen très pythonique de résoudre votre problème, car il génère délibérément une exception dans try .. sauf:
import sys
try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
Je vous recommande d'utiliser la lib optparse [1], c'est plus élégant: D
[1] Analyseur d'options de ligne de commande plus puissant < http://docs.python.org/library/optparse.html >
Basé sur la réponse de Noctis Skytower
import sys
args = sys.argv[1:]
for arg in args:
if arg == "do":
# do this
if not args:
print "usage is bla bla bla"
import argparse
def parse_args():
parser = argparse.ArgumentParser(
add_help=True,
)
# your arguments here
if len(sys.argv) == 1:
parser.print_help()
sys.exit(0)
else:
options = parser.parse_args()
return options