Python : argparse
Librairie argparse
Cette libraire est très utilisée pour gérer les arguments de notre programme.
Le but va être de créer un objet parser, qui va connaître un certain nombre d'arguments possibles (leur nom, leur type, leur aide qu'il affichera avec un appel du type --help).
Exemples
Basique <source lang="python"> import argparse
- Initialisation, la description est le message affiché au sommet de l'aide
parser = argparse.ArgumentParser(description="Mes arguments sont meilleurs que les tiens")
- Ajout d'un argument facultatif, appellé avec -t
parser.add_argument("-t", "--type", type=str, help="choose the dns type for your query", default="a")
- Ajout d'un argument obligatoire
parser.add_argument("-s", "--server", type=str, help="choose a server", default="9.9.9.9", required=True)
- Ajout d'un argument appellé avec rien du tout (positionnel)
parser.add_argument('domain', type=str, help="ayo le domaine") args = parser.parse_args() </source>
Ici, je pourrais récupérer mes arguments en fonction de leur nom. <source lang="python"> print(args.type, args.domain) </source>
Je peux désormais appeller mon script avec --help ou -h et l'aide sortira sans que j'ai eu à la configurer <source lang="python"> % ./exemple.py --help Sandbox/Useless Ulysses usage: exemple.py [-h] [-t TYPE] -s SERVER domain
Mes arguments sont meilleurs que les tiens
positional arguments:
domain ayo le domaine
optional arguments:
-h, --help show this help message and exit -t TYPE, --type TYPE choose the dns type for your query -s SERVER, --server SERVER choose a server
</source>
Et l'appel du script en oubliant un argument obligatoire provoquera une erreur: <source lang="python">
% ./exemple.py Sandbox/Useless Ulysses
usage: exemple.py [-h] [-t TYPE] -s SERVER domain exemple.py: error: the following arguments are required: -s/--server, domain </source>