Python argparse

De knowledge
Aller à la navigation Aller à la recherche

Le module argparse pour Python permet de traiter les arguments et les options passés en ligne de commande.

Exemple simple

On souhaite avoir un programme qui traite un fichier texte et, soit afficher le résultat sur la sortie standard soit dans un fichier donné en option.

import argparse

parser = argparse.ArgumentParser(description='Translate file')
parser.add_argument('filename', help='xln (text) file')
parser.add_argument('-w', type=argparse.FileType('w', encoding='latin-1'), dest='outfile', help='the file to write')
args = parser.parse_args()

print ("Read form file :",end='')
print (args.filename)

if (args.outfile):
    args.outfile.write("Hello world!")
    args.outfile.close()

Si on appelle le programme sans aucun paramètre:

python3 myprog.py
usage: myprog.py [-h] [-w OUTFILE] filename
myprog.py: error: the following arguments are required: filename

OK je dois fournir un fichier:

python3 myprog.py text.txt
text.txt

C'est une syntaxe valable!

python3 myprog.py -w out.txt text.txt
text.txt

Et si on regarde on a un fichier out.txt qui contient "Hello world!\n"