← retour aux snippets

argparse: sous-commandes (style git)

Créer un CLI avec sous-commandes claires et aide intégrée.

objectif

Créer un CLI avec sous-commandes claires et aide intégrée.

code minimal

import argparse

def main(argv=None):
    parser = argparse.ArgumentParser(prog="outil")
    sub = parser.add_subparsers(dest="cmd", required=True)

    p_add = sub.add_parser("add", help="addition")
    p_add.add_argument("a", type=int)
    p_add.add_argument("b", type=int)

    p_sub = sub.add_parser("sub", help="soustraction")
    p_sub.add_argument("a", type=int)
    p_sub.add_argument("b", type=int)

    args = parser.parse_args(argv)
    if args.cmd == "add":
        print(args.a + args.b)
    elif args.cmd == "sub":
        print(args.a - args.b)

if __name__ == "__main__":
    main(["add", "2", "1"])  # attendu: 3

utilisation

python outil.py add 2 1    # affiche 3
python outil.py sub 5 7    # affiche -2

variante(s) utile(s)

# alias de sous-commandes
parser = argparse.ArgumentParser(prog="outil")
sub = parser.add_subparsers(dest="cmd", required=True)
p_add = sub.add_parser("add", aliases=["plus"], help="addition")
print("plus" in p_add.aliases)

notes

  • Utilisez dest et required=True pour forcer le choix d’une sous-commande.
  • Ajoutez des exemples dans epilog pour une aide plus riche.