Python3 arguments de ligne de commande

Python3 基础语法Syntaxe de base de Python3

Python fournit le modulegetoptsys pour obtenir les arguments de la ligne de commande.

$ python test.py arg1 arg2 arg3

En Python, vous pouvez également utilisersysdesys.argvpour obtenir les arguments de la ligne de commande :

  • sys.argvest la liste des arguments de ligne de commande.

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

Remarque :sys.argv[0]représente le nom du script.

Exemples

Le code du fichier test.py est le suivant :

Exemples

#!/usr/bin/python3

import sys

print ('Number of arguments:', len(sys.argv), ' arguments.')
print ('Liste des arguments :', str(sys.argv))
print ('Script name:', str(sys.argv[0]))

En exécutant le code ci-dessus, la sortie est :

$ python3 test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
脚本名: test.py

Module getopt

Le module getopt est un module spécialement conçu pour gérer les arguments de ligne de commande, utilisé pour récupérer les options et arguments de ligne de commande, c'est-à-dire,sys.argv. Les options de ligne de commande rendent les arguments du programme plus flexibles. Il prend en charge le mode d'option courte-et le mode d'option longue--。

Le module fournit deux méthodes et un gestionnaire d'exception pour analyser les arguments de ligne de commande.

Méthode getopt.getopt

La méthode getopt.getopt est utilisée pour analyser une liste d'arguments de ligne de commande. Le format de syntaxe est le suivant :

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

Description des paramètres de la méthode :

  • args: la liste des arguments de ligne de commande à analyser.

  • options: Défini au format chaîne. Leoptionsdeux-points après:indique que l’option doit avoir un argument supplémentaire ; l’absence de deux-points signifie que l’option ne prend pas d’argument.

  • long_options: Défini au format liste. Lelong_optionssigne égal après=indique que si l’option est définie, elle doit avoir un argument supplémentaire ; sinon, aucun argument n’est attaché.

La valeur de retour de cette méthode se compose de deux éléments : le premier est(option, value)une liste de tuples. Le second est une liste d’arguments, contenant ceux sans-ou--options.

Ensuite, nous définissons une fonction site(), puis saisissons le nom du sitenameet l’URL en ligne de commande,urldes abréviations peuvent être utiliséesnetu:

Exemples

import sys
import getopt
 
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:")  # Mode d'options courtes
     
    except:
        print("Erreur")
 
    for opt, arg in opts:
        if opt in ['-n']:
            name = arg
        elif opt in ['-u']:
            url = arg
     
 
    print( name +" " + url)
 
site()

Pour tester le code ci-dessus, saisissez ce qui suit dans la ligne de commande :

python3 test.py -n EXAMPLE -u www.example.com

La sortie est :

EXAMPLE www.example.com

L'exemple suivant démontre l'utilisation du mode d'option longue :

Exemples

import sys
import getopt
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:",  
                                   ["name=",
                                    "url="])  # Mode d'option longue
     
    except:
        print("Erreur")
 
    for opt, arg in opts:
        if opt in ['-n', '--name']:
            name = arg
        elif opt in ['-u', '--url']:
            url = arg
     
 
    print( name + " " + url)
 
site()

Pour tester le code ci-dessus, saisissez ce qui suit dans la ligne de commande :

python3 test.py -n EXAMPLE -u www.example.com

La sortie est :

EXAMPLE www.example.com

Une autre méthode est getopt.gnu_getopt, qui est rarement utilisée, donc nous n'entrerons pas dans les détails ici.


Exception getopt.GetoptError

Cette exception est déclenchée lorsqu'aucune liste d'arguments n'est trouvée, ou lorsque l'argument requis d'une option est vide.

L'argument de l'exception est une chaîne indiquant la raison de l'erreur. Les attributsmsgetoptsont les informations d'erreur pour l'option concernée.

Exemples

Supposons que nous créions un tel script, qui peut transmettre deux noms de fichiers au fichier de script via la ligne de commande, et nous utilisons également une autre option pour afficher l'utilisation du script. L'utilisation du script est la suivante :

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

Le code du fichier test.py est le suivant :

Exemples

#!/usr/bin/python3

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 ('Le fichier d’entrée est :', inputfile)
   print ('Le fichier de sortie est :', outputfile)

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

En exécutant le code ci-dessus, la sortie est :

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

$ python3 test.py -i inputfile -o outputfile
输入的文件为: inputfile
输出的文件为: outputfile

Python3 基础语法Syntaxe de base de Python3

Autres extensions