Annuncio pubblicitario

Click è un pacchetto Python per la scrittura di interfacce da riga di comando. Produce una splendida documentazione per te e ti consente di creare interfacce da riga di comando in appena una riga di codice. In breve: è fantastico e può aiutarti a portare i tuoi programmi al livello successivo.

Ecco come puoi usarlo per ravvivare i tuoi progetti Python.

Scrittura di programmi da riga di comando senza clic

È possibile scrivere programmi da riga di comando senza usare Click, ma ciò richiede più impegno e molto più codice. È necessario analizzare gli argomenti della riga di comando, eseguire la convalida, sviluppare la logica per gestire argomenti diversi e creare un menu di aiuto personalizzato. Vuoi aggiungere una nuova opzione? Quindi modificherai la tua funzione di aiuto.

Non c'è niente di sbagliato nello scrivere il tuo codice, e farlo è un ottimo modo per imparare Python, ma Click ti consente di seguire i principi di "Non ripetere te stesso" (DRY). Senza Click, scriverai un codice che è fragile e richiede molta manutenzione ogni volta che si verificano cambiamenti.

instagram viewer

Ecco una semplice interfaccia da riga di comando codificata senza fare clic:

import sys. import random def do_work (): funzione per gestire l'utilizzo della riga di comando args = sys.argv args = args [1:] # Il primo elemento di args è il nome del file se len (args) == 0: print ('Non hai passato alcun comando in!') else: per a in args: if a == '--help': print ('Programma base della riga di comando') print ('Opzioni:') print ('- -help -> mostra questo menu di aiuto di base. ') print (' --monty -> mostra una citazione di Monty Python. ') print (' --veg -> mostra una verdura casuale ') elif a ==' --monty ': print (' Che cos'è questo, poi? "Romanes eunt domus"? La gente chiamava Romanes, vanno, la casa? ') Elif a ==' --veg ': print (random.choice ([' Carota ',' Patata ',' Rapa '])) altro: print (' Argomento non riconosciuto. ') se __name__ ==' __main__ ': do_work ()
Esempio di interfaccia della riga di comando di Python

Queste 27 linee di Python funzionano bene ma sono molto fragili. Qualsiasi modifica apportata al tuo programma avrà bisogno di molti altri codici di supporto per cambiare. Se modifichi il nome di un argomento, dovrai aggiornare le informazioni della guida. Questo codice può facilmente crescere senza controllo.

Ecco la stessa logica con Click:

importazione clic. import random @ click.command () @ click.option ('- monty', default = False, help = 'Mostra un preventivo di Monty Python.') @ click.option ('- veg', default = False, help = 'Mostra una verdura a caso.') def do_work (monty, veg): L'esempio Click di base seguirà i tuoi comandi se monty: print ('Cos'è, allora? "Romanes eunt domus"? Le persone chiamano Romanes, vanno, la casa? ') If veg: print (random.choice ([' Carrot ',' Potato ',' Turnip '])) if __name__ ==' __main__ ': do_work ()

Questo esempio Click implementa la stessa logica in 16 righe di codice. Gli argomenti vengono analizzati per te e viene generata la schermata di aiuto:

Python Click schermata di aiuto generata automaticamente

Questo confronto di base mostra quanto tempo e fatica puoi risparmiare usando programmi come Click. Sebbene l'interfaccia della riga di comando possa apparire uguale per l'utente finale, il codice sottostante è più semplice e risparmierai molto tempo nella codifica. Qualsiasi modifica o aggiornamento che scriverai in futuro vedrà anche un aumento significativo dei tempi di sviluppo.

Introduzione a Click for Python

Prima di utilizzare Click, ti ​​consigliamo di farlo configurare un ambiente virtuale Scopri come utilizzare l'ambiente virtuale PythonChe tu sia uno sviluppatore Python esperto o che tu abbia appena iniziato, imparare a configurare un ambiente virtuale è essenziale per qualsiasi progetto Python. Leggi di più . Ciò impedirà ai pacchetti Python di entrare in conflitto con il tuo sistema Python o altri progetti su cui potresti lavorare. Potresti anche prova Python nel tuo browser Prova Python nel tuo browser con queste shell interattive online gratuiteSia che tu stia esaminando questi esempi di Python o riesaminando le basi di array ed elenchi, puoi testare il codice direttamente nel tuo browser. Ecco i migliori interpreti Python online che abbiamo trovato. Leggi di più se vuoi giocare con Python e Click.

Infine, assicurati di eseguire Python versione 3. È possibile utilizzare Click with Python versione 2, ma questi esempi sono in Python 3. Ulteriori informazioni su differenze tra Python 2 e Python 3.

Una volta pronto, installa Click dalla riga di comando usando PIP (come installare PIP per Python):

pip install click

Scrivi il tuo programma First Click

In un editor di testo, iniziare importando Fare clic:

importazione clic

Una volta importato, crea a metodo e a principale punto d'entrata. Nostro Guida OOP di Python tratta questi in modo più dettagliato, ma forniscono un posto dove archiviare il codice e un modo per Python di iniziare a eseguirlo:

importazione clic. import random def veg (): il metodo di base restituirà una stampa vegetale casuale (random.choice (['Carota', 'Patata', 'Rapa', 'Pastinaca'])) se __name__ == '__main__': veg ()

Questo script molto semplice produrrà un vegetale casuale. Il codice potrebbe apparire diverso, ma questo semplice esempio è perfetto da combinare con Click.

Salva come click_example.pye quindi eseguirlo nella riga di comando (dopo aver navigato nella sua posizione):

python click_example.py

Dovresti vedere un nome vegetale casuale. Miglioriamo le cose aggiungendo Click. Modifica il codice per includere i decoratori di clic e a per ciclo continuo:

@ Click.command () @ click.option ('- total', default = 3, help = 'Numero di verdure da produrre.') def veg (totale): il metodo di base restituirà una verdura casuale per il numero nell'intervallo (totale): stampa (random.choice (['Carota', 'Patata', 'Rapa', 'Pastinaca'])) se __name__ == '__main__': veg ()

Durante la corsa, vedrai una verdura casuale visualizzata tre volte.

Analizziamo questi cambiamenti. Il @ Click.command () configura decoratore Fai clic per lavorare con la funzione immediatamente successiva al decoratore. In questo caso, questo è il veg () funzione. Ne avrai bisogno per ogni metodo che desideri utilizzare con Click.

Il @ click.option decorator configura click per accettare i parametri dalla riga di comando, che passerà al tuo metodo. Ci sono tre argomenti usati qui:

  1. -totale: Questo è il nome della riga di comando per totale discussione.
  2. predefinito: Se non specifichi l'argomento totale quando usi lo script, Click utilizzerà il valore per impostazione predefinita.
  3. Aiuto: Una breve frase che spiega come utilizzare il programma.

Vediamo Click in action. Dalla riga di comando, esegui lo script, ma passa in totale argomento come questo:

python click_example.py - totale 10

IMPOSTANDO –Totale 10 dalla riga di comando, il tuo script stamperà dieci verdure casuali.

Se passi in -Aiuto bandiera, vedrai una bella pagina di aiuto, insieme alle opzioni che puoi utilizzare:

python click_example.py --help
Guida di Python Click

Aggiunta di più comandi

È possibile utilizzare molti decoratori di clic sulla stessa funzione. Aggiungi un'altra opzione clic a veg funzione:

@ click.option ('- gravy', default = False, help = 'Aggiungi "con sugo" alle verdure.')

Non dimenticare di passare questo nel metodo:

def veg (totale, sugo):

Ora quando esegui il tuo file, puoi passare il file sugo bandiera:

python click_example.py --gravy y

Anche la schermata di aiuto è cambiata:

Schermata della guida di Python Click

Ecco l'intero codice (con alcuni refactoring minori per la pulizia):

importazione clic. import random @ click.command () @ click.option ('- gravy', default = False, help = 'Aggiungi "con sugo" alle verdure.') @ click.option ('- total', default = 3, help = 'Numero di verdure da produrre.') def veg (totale, sugo): il metodo di base restituirà una verdura casuale per il numero nell'intervallo (totale): scelta = random.choice (['Carota', 'Patata', 'Rapa', 'Pastinaca']) se sugo: stampa (f '{scelta} con sugo') altro: stampa (scelta) se __name__ == '__main__': veg ()

Ancora più opzioni di clic

Una volta che conosci le basi, puoi iniziare a esaminare le opzioni Click più complesse. In questo esempio, imparerai come passare diversi valori a un singolo argomento, che Click convertirà in una tupla. Puoi saperne di più sulle tuple nel nostro guida al dizionario Python.

Crea un nuovo file chiamato click_example_2.py. Ecco il codice iniziale necessario:

importazione clic. import random @ click.command () def add (): il metodo di base sommerà due numeri insieme. passa se __name__ == '__main__': add ()

Non c'è niente di nuovo qui. La sezione precedente spiega questo codice in dettaglio. Aggiungere un @ click.option chiamato numeri:

@ click.option ('- numeri', nargs = 2, tipo = int, help = 'Aggiungi due numeri insieme.')

L'unico nuovo codice qui è il nargs = 2, e il type = int opzioni. Questo dice a Click di accettare due valori per il numeri opzione e che devono essere entrambi di tipo numeri interi. Puoi cambiarlo in qualsiasi numero o tipo di dati (valido) che ti piace.

Infine, modifica il Inserisci metodo per accettare il numeri argomento, ed esegui qualche elaborazione con loro:

def add (numeri): il metodo di base sommerà due numeri insieme. risultato = numeri [0] + numeri [1] stampa (f '{numeri [0]} + {numeri [1]} = {risultato}')

Ogni valore che passi è accessibile tramite numeri oggetto. Ecco come usarlo nella riga di comando:

python click_example_2.py --numbers 1 2
Risultato nargs di Python Click

Fare clic su È la soluzione per le utility Python

Come hai visto, Click è facile da usare ma molto potente. Mentre questi esempi trattano solo le basi di Click, ci sono molte più funzioni che puoi imparare ora che hai una solida conoscenza delle basi.

Se stai cercando alcuni progetti Python con cui mettere alla prova le tue nuove abilità trovate, perché non imparare come controllare un Arduino con Python Come programmare e controllare un Arduino con PythonPurtroppo, è impossibile programmare direttamente un Arduino in Python, ma puoi controllarlo tramite USB usando un programma Python. Ecco come. Leggi di più o che ne dici leggere e scrivere su Google Sheets con Python Come leggere e scrivere su fogli Google con PythonPython può sembrare strano e insolito, tuttavia è facile da imparare e da usare. In questo articolo, ti mostrerò come leggere e scrivere su Fogli Google usando Python. Leggi di più ? Uno di questi progetti sarebbe perfetto per la conversione in Click!

Joe è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionale e quando non pilota droni o scrive musica, spesso si trova a scattare foto o a produrre video.