Python - Arguments de ligne de commande

Python fournit un getopt module qui vous aide à analyser les options et les arguments de la ligne de commande.

$ python test.py arg1 arg2 arg3

Le Python sys module permet d'accéder à tous les arguments de ligne de commande via le sys.argv. Cela sert à deux fins -

  • sys.argv est la liste des arguments de ligne de commande.

  • len (sys.argv) est le nombre d'arguments de ligne de commande.

Ici sys.argv [0] est le programme ie. nom du script.

Exemple

Considérez le script suivant test.py -

#!/usr/bin/python

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

Maintenant, exécutez le script ci-dessus comme suit -

$ python test.py arg1 arg2 arg3

Cela produit le résultat suivant -

Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']

NOTE - Comme mentionné ci-dessus, le premier argument est toujours le nom du script et il est également compté en nombre d'arguments.

Analyse des arguments de ligne de commande

Python a fourni un getoptmodule qui vous aide à analyser les options et les arguments de la ligne de commande. Ce module fournit deux fonctions et une exception pour activer l'analyse des arguments de ligne de commande.

méthode getopt.getopt

Cette méthode analyse les options de ligne de commande et la liste des paramètres. Voici une syntaxe simple pour cette méthode -

getopt.getopt(args, options, [long_options])

Voici le détail des paramètres -

  • args - Il s'agit de la liste d'arguments à analyser.

  • options - Il s'agit de la chaîne de lettres d'option que le script souhaite reconnaître, les options qui nécessitent un argument doivent être suivies de deux points (:).

  • long_options- Il s'agit d'un paramètre facultatif et s'il est spécifié, il doit s'agir d'une liste de chaînes avec les noms des options longues, qui doivent être prises en charge. Les options longues, qui nécessitent un argument, doivent être suivies d'un signe égal ('='). Pour n'accepter que des options longues, les options doivent être une chaîne vide.

  • Cette méthode renvoie une valeur composée de deux éléments: le premier est une liste de (option, value)paires. Le second est la liste des arguments de programme laissés après la suppression de la liste d'options.

  • Chaque paire option-valeur renvoyée a l'option comme premier élément, précédée d'un trait d'union pour les options courtes (par exemple, «-x») ou de deux traits d'union pour les options longues (par exemple, «--long-option»).

Exception getopt.GetoptError

Ceci est déclenché lorsqu'une option non reconnue est trouvée dans la liste d'arguments ou lorsqu'une option nécessitant un argument n'en reçoit aucun.

L'argument de l'exception est une chaîne indiquant la cause de l'erreur. Les attributsmsg et opt donnez le message d'erreur et l'option associée.

Exemple

Considérez que nous voulons passer deux noms de fichiers via la ligne de commande et que nous voulons également donner une option pour vérifier l'utilisation du script. L'utilisation du script est la suivante -

usage: test.py -i <inputfile> -o <outputfile>

Voici le script suivant pour tester.py -

#!/usr/bin/python

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print 'test.py -i <inputfile> -o <outputfile>'
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print 'test.py -i <inputfile> -o <outputfile>'
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print 'Input file is "', inputfile
   print 'Output file is "', outputfile

if __name__ == "__main__":
   main(sys.argv[1:])

Maintenant, exécutez le script ci-dessus comme suit -

$ test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ test.py -i BMP -o
usage: test.py -i <inputfile> -o <outputfile>

$ test.py -i inputfile
Input file is " inputfile
Output file is "