Capitolo 22: Strumenti CLI con argparse, Click & Typer

Impara a creare potenti interfacce da riga di comando usando la libreria standard e framework popolari.

Scarica chapter22.py

Obiettivi

1. Nozioni di base su argparse

import argparse

def main():
    parser = argparse.ArgumentParser(description="Saluta un utente.")
    parser.add_argument("name", help="Nome dell'utente")
    parser.add_argument("-t", "--times", type=int, default=1,
                        help="Numero di saluti")
    args = parser.parse_args()

    for _ in range(args.times):
        print(f"Hello, {args.name}!")

if __name__ == "__main__":
    main()

Esegui: python chapter22.py Alice -t 3

2. Libreria Click

import click

@click.command()
@click.argument("name")
@click.option("--times", default=1, help="Numero di saluti")
def cli(name, times):
    """Saluta un utente più volte."""
    for _ in range(times):
        click.echo(f"Hello, {name}!")

if __name__ == "__main__":
    cli()

Installa: pip install click. Esegui: python chapter22.py Bob --times 2

3. Typer & Type Hints

import typer

app = typer.Typer()

@app.command()
def greet(name: str, times: int = 1):
    """Saluta un utente più volte."""
    for _ in range(times):
        typer.echo(f"Hello, {name}!")

if __name__ == "__main__":
    app()

Installa: pip install typer[all]. Esegui: python chapter22.py greet Carol --times 3

4. Pacchettizzare come Script Console

Aggiungi in setup.py o pyproject.toml:

[project.scripts]
mycli = "mypackage.cli:app"

Dopo l’installazione:mycli --help

Esercizi

  1. Estendi l’esempio con argparse aggiungendo il flag --uppercase.
  2. Crea un gruppo di comandi Click con due sottocomandi: greet e farewell.
  3. Costruisci un’app Typer con comandi per aggiungere/listare/rimuovere elementi da una to-do list in memoria.
  4. Pacchettizza l’app Typer e installala localmente come todo-cli.