Python Language Utilisation d'arguments en ligne de commande avec argv


Exemple

Chaque fois qu'un script Python est appelé à partir de la ligne de commande, l'utilisateur peut fournir des arguments de ligne de commande supplémentaires qui seront transmis au script. Ces arguments seront disponibles pour le programmeur de la variable système sys.argv ( « argv » est un nom traditionnel utilisé dans la plupart des langages de programmation, et cela signifie « arg ument v ecteur »).

Par convention, le premier élément de la liste sys.argv est le nom du script Python lui-même, tandis que le reste des éléments sont les jetons transmis par l'utilisateur lors de l'appel du script.

# cli.py
import sys
print(sys.argv)

$ python cli.py
=> ['cli.py']

$ python cli.py fizz
=> ['cli.py', 'fizz']

$ python cli.py fizz buzz
=> ['cli.py', 'fizz', 'buzz']

Voici un autre exemple d'utilisation de argv . Nous enlevons d'abord l'élément initial de sys.argv car il contient le nom du script. Ensuite, nous combinons le reste des arguments en une seule phrase et imprimons finalement cette phrase en préfixant le nom de l'utilisateur actuellement connecté (pour qu'il émule un programme de discussion).

import getpass
import sys

words = sys.argv[1:]
sentence = " ".join(words)
print("[%s] %s" % (getpass.getuser(), sentence))

L'algorithme couramment utilisé lors de l'analyse "manuelle" d'un certain nombre d'arguments non positionnels consiste à parcourir la liste sys.argv . L'une des façons consiste à parcourir la liste et à en afficher chaque élément:

# reverse and copy sys.argv
argv = reversed(sys.argv)
# extract the first element
arg = argv.pop()
# stop iterating when there's no more args to pop()
while len(argv) > 0:
    if arg in ('-f', '--foo'):
        print('seen foo!')
    elif arg in ('-b', '--bar'):
        print('seen bar!')
    elif arg in ('-a', '--with-arg'):
        arg = arg.pop()
        print('seen value: {}'.format(arg))
    # get the next value
    arg = argv.pop()