Capitolo 22: Strumenti CLI con argparse, Click & Typer
Impara a creare potenti interfacce da riga di comando usando la libreria standard e framework popolari.
Scaricachapter22.py
Obiettivi
- Usare
argparse
per analizzare argomenti e opzioni. - Creare comandi e sottocomandi con
Click
. - Sfruttare
Typer
e type hint per costruire CLI. - Pacchettizzare lo strumento come script console.
- Gestire validazione, messaggi di aiuto ed errori.
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
- Estendi l’esempio con
argparse
aggiungendo il flag--uppercase
. - Crea un gruppo di comandi Click con due sottocomandi:
greet
efarewell
. - Costruisci un’app Typer con comandi per aggiungere/listare/rimuovere elementi da una to-do list in memoria.
- Pacchettizza l’app Typer e installala localmente come
todo-cli
.