Opzioni da riga di comando e analisi degli argomenti con argparse in Python
Le interfacce a riga di comando (CLI) sono uno dei modi più rapidi ed efficaci per interagire con il software. Consentono di eseguire comandi direttamente, garantendo un’esecuzione più veloce e funzionalità avanzate. Gli sviluppatori creano spesso CLI in Python per diverse applicazioni, utility e script di automazione, permettendo così di elaborare dinamicamente l’input dell’utente. È qui che entra in gioco il modulo argparse di Python.
Il modulo argparse semplifica la gestione degli input da riga di comando e permette agli sviluppatori di creare strumenti interattivi e facili da usare. Essendo parte della libreria standard, consente di definire, elaborare e validare gli input senza dover scrivere logiche complesse.
In questo articolo analizzeremo i concetti principali, esempi utili e funzionalità avanzate del modulo argparse per permetterti di iniziare subito a costruire strumenti CLI solidi.
Come utilizzare argparse in Python per le interfacce a riga di comando Copia link
Passo 1: Importare il modulo Copia link
Importa il modulo nel tuo script Python:
import argparse
Questo abilita l’analisi degli argomenti passati dalla riga di comando.
Passo 2: Creare un oggetto ArgumentParser Copia link
La classe ArgumentParser è la classe più essenziale dell’API del modulo argparse. Per usarla, crea un’istanza:
parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.")
Qui:
-
description spiega cosa fa il programma e viene mostrata quando si esegue --help.
Passo 3: Aggiungere input e opzioni Copia link
Definisci i parametri che il programma accetta tramite add_argument():
parser.add_argument('filename', type=str, help="Name of the file to process")
parser.add_argument('--verbose', action='store_true', help="Enable verbose mode")
Spiegazione:
-
filename è obbligatorio.
-
--verbose è opzionale e abilita la modalità dettagliata.
Passo 4: Analizzare gli input dell’utente Copia link
Elabora gli argomenti forniti tramite:
args = parser.parse_args()
I valori elaborati vengono memorizzati come attributi dell’oggetto args.
Passo 5: Accedere ai dati elaborati Copia link
Esempio:
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
Esempi di utilizzo della CLI Copia link
Elaborazione del file senza modalità verbose Copia link
python3 file.py example.txt
Elaborazione del file con modalità verbose Copia link
python3 file.py example.txt --verbose
Mostrare l’aiuto Copia link
python3 file.py --help
Esempi comuni di utilizzo di argparse Copia link
Esempio 1: Aggiungere valori predefiniti Copia link
Alcuni argomenti opzionali necessitano di valori predefiniti. In questo esempio, --timeout ha un valore predefinito di 30 secondi:
import argparse
parser = argparse.ArgumentParser(description="Demonstrating default argument values.")
parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)")
args = parser.parse_args()
print(f"Timeout value: {args.timeout} seconds")
Spiegazione
-
Importazione del modulo
-
Creazione dell’istanza di ArgumentParser
-
Aggiunta dell’argomento --timeout con valore predefinito
-
Parsing tramite parse_args()
Caso 1: uso del valore predefinito
python file.py
Caso 2: valore personalizzato
python file.py --timeout 60
Esempio 2: Utilizzare choices Copia link
Il parametro choices limita un argomento a un insieme di valori validi:
parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation")
Caso 1: valore valido
python3 file.py --mode basic
Caso 2: nessun input
python3 file.py
Caso 3: valore non valido
python3 file.py --mode intermediate
Esempio 3: Gestire valori multipli Copia link
Il parametro nargs='+' consente di accettare più valori come lista:
parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process")
Caso 1: più numeri
python3 file.py --numbers 10 20 30
Caso 2: un numero
python3 file.py --numbers 5
Caso 3: nessun input
python3 file.py
Caso 4: input non valido
python3 file.py --numbers 10 abc 20
Esempio 4: Argomenti opzionali obbligatori Copia link
Gli argomenti opzionali (quelli che iniziano con --) non sono obbligatori per impostazione predefinita. Tuttavia, puoi renderli obbligatori usando required=True:
parser.add_argument('--config', required=True, help="Path to the configuration file")
Caso 1: input valido
python3 file.py --config settings.json
Caso 2: mancanza dell’argomento obbligatorio
python3 file.py
Funzionalità avanzate Copia link
Flag booleani Copia link
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
Raggruppare argomenti correlati Copia link
group = parser.add_argument_group('File Operations')
group.add_argument('--input', type=str, help="Input file")
group.add_argument('--output', type=str, help="Output file")
Argomenti mutuamente esclusivi Copia link
group = parser.add_mutually_exclusive_group()
group.add_argument('--json', action='store_true', help="Output in JSON format")
group.add_argument('--xml', action='store_true', help="Output in XML format")
Conclusione Copia link
Il modulo argparse semplifica la creazione di CLI affidabili per gestire gli argomenti passati ai programmi Python. Dalle opzioni più semplici alle funzionalità avanzate come choices e nargs, gli sviluppatori possono costruire strumenti potenti, intuitivi e facili da mantenere. Dare nomi chiari agli argomenti e scrivere descrizioni corrette rende gli script più leggibili e manutenzionabili.