Les arguments de la ligne de commande
Par Darko Stankovski, 06/07/2026 (Mise à jour 06/07/2026) — Débutant
Quand on lance un programme en invite de commande, on peut lui ajouter des mots, des options, des chemins de fichiers. Ces éléments supplémentaires sont ce qu'on appelle les arguments de la ligne de commande (ou options). Ils permettent de dire au programme quoi faire et comment le faire, sans jamais ouvrir son code ni modifier quoi que ce soit à l'intérieur ni modifier des valeurs dans des sous-menus.
Voyons à quoi ils ressemblent ces paramètres que vous avez peut-être déjà croisé et les conventions qui les régissent. Nous pourrons par la suite les exploiter.
Un exemple que vous pouvez déjà connaitre
Vous avez peut-être déjà croisé une ligne comme l'une des deux suivantes :
cp photo.jpg sauvegarde/
copy photo.jpg sauvegarde/
Ces deux instructions font la même chose, la première concerne le monde UNIX (Linux, Mac…), la seconde le monde Windows.
Décortiquons-la. Le premier mot, cp ou copy, est le nom du programme (cp sur les systèmes Unix, copy sous Windows). Tout ce qui suit est constitué d'arguments :
photo.jpg: le fichier à copiersauvegarde/: l'endroit où le copier
Le programme lit ces deux arguments et agit en conséquence. Si vous aviez tapé d'autres valeurs, il aurait copié un autre fichier vers un autre endroit. Le comportement du programme reste le même, seules les données sur lesquelles il travaille changent.
Ces arguments peuvent aussi bien être des données sur lesquelles il travaille que des informations de comportement. Sous UNIX, vous avez par exemple ls qui affiche la liste du contenu du répertoire et ls -l qui présente cette liste sous forme de liste. Quand vous exécutez python, vous entrez dans le shell intéractif et python --version affiche la version de Python.
C'est toute la puissance de la ligne de commande : au lancement du programme, on l'informe sur quelles données travailler et comment (quelle configuration). Pas d'édition de fichier de configuration avant chaque lancement, pas d’interaction une fois le programme lancé.
L'anatomie d'une commande
Prenons un exemple réel, tiré d'ImageMagick, une célèbre boîte à outils de manipulation d'images en ligne de commande. La commande suivante convertit une image et la redimensionne :
magick photo.jpg -resize 800x600 -quality 90 photo.png
On y distingue plusieurs types d'éléments qui ne jouent pas le même rôle.
Le nom du programme vient toujours en premier : ici magick. C'est ce qu'on invoque.
Les arguments positionnels sont des valeurs identifiées par leur position. Dans cet exemple, photo.jpg et photo.png sont des arguments positionnels : le programme sait que le premier est l'image d'entrée et le second l'image de sortie, grâce à l'endroit où ils se trouvent dans la commande.
Les options (ou arguments optionnels) sont introduites par un nom précédé d'un ou plusieurs tirets : -resize, -quality. Contrairement aux arguments positionnels, elles s'identifient par leur nom, pas par leur place. Beaucoup d'options attendent une valeur juste après elles : -resize 800x600 signifie « redimensionne à 800 pixels de large sur 600 de haut », et -quality 90 fixe le niveau de qualité de la compression. On peut souvent réordonner ces options librement sans changer le sens de la commande.
Une remarque au passage : ImageMagick, pour des raisons historiques, n'utilise qu'un seul tiret devant ses options, même longues, là où la plupart des outils modernes en emploient deux. Parlons de cette notion.
La convention des tirets
Il existe deux façons d'écrire une option.
- La forme longue, avec deux tirets, est explicite et lisible :
--verbose,--output,--help. - La forme courte, avec un seul tiret, tient sur une seule lettre :
-v,-o,-h.
Très souvent, une même option existe sous les deux formes, qui sont alors interchangeables. Les deux commandes suivantes sont ainsi rigoureusement équivalentes :
sauvegarder --verbose --output rapport.txt
sauvegarder -v -o rapport.txt
Avec la forme courte, on peut fréquemment regrouper plusieurs options d'une lettre derrière un seul tiret. Ainsi -v -l -a peut s'écrire -vla. Vous avez l'habituel ls -lah, qui combine en réalité trois options distinctes (affiche tout le contenu avec les fichiers cachés sous forme de liste avec une mise en forme humaine).
Les drapeaux (flags) : présents ou absents
Ce dernier exemple montre des options qui n'attendent pas de valeurs. Ces options sont simplement présentes ou absentes. On les appelle des drapeaux (flags en anglais).
Dans python --version, l'option --version ne demande aucune valeur. Sa seule présence suffit à indiquer à Python de ne pas lancer le shell intéractif mais d'afficher le numéro de version. L'option -v ou sous sa forme longue --verbose est assez commune pour simplement indiquer au programme d'être plus bavard.
C'est une distinction importante. Une option comme --quality 90 consomme la valeur qui la suit. Un drapeau comme --verbose, lui, ne touche à rien après lui et surtout n'attends rien.
Comment savoir si une option attends une valeur ou non ? Il faut lire la doc ou l'aide souvent disponible avec l'argument -h ou --help.
Pourquoi des arguments en ligne de commande
Depuis la généralisation des interfaces graphiques où on lance de manière uniforme un programme par un click, on a perdu cette possibilité de paramétrer l'exécution d'un programme. Ces paramétrages permettent une exécution spécifique pour ce lancement. Avec l'exemple d'ImageMagik, vous devez à chaque exécution traiter une image différente qu'il faudra indiquer au programme.
C'est beaucoup plus rapide que de lancer une interface graphique et demander une saisie ou passer par un fichier de configuration.
À noter à propos du fichier de configuration que les deux démarches ne sont pas opposées mais complémentaires : les paramètres habituels d'exécution seront dans un fichier de configuration et les paramètres spécifiques seront passé en ligne de commande. Ils ne sont pas non plus exclusifs, un paramètre de ligne de commande pourra remplacer le paramètre habituel.
En résumé
Retenons les notions essentielles avant de passer à la pratique :
- Un programme reçoit des arguments qui modifient son comportement sans qu'on ait à changer son code ou à interagir après son lancement.
- Les arguments positionnels s'identifient par leur place, leur ordre est significatif.
- Les arguments optionnels s'identifient par leur nom, préfixé d'un ou deux tirets. La place n'a souvent aucune importance.
- Les options peuvent exister sous forme longue (
--option) plus lisible ou forme courte (-o) plus rapide. Les deux coexistent souvent. - Un drapeau (ou flag) est une option sans valeur : sa présence seule porte un sens.
Il ne nous reste plus qu'à mettre tout ça en place en Python.