Come creare i propri programmi della riga di comando in Python con Click

Come creare i propri programmi della riga di comando in Python con Click / Programmazione

Click è un pacchetto Python per la scrittura di interfacce a linea di comando. Produce bellissime documentazioni per te e ti consente di costruire interfacce a linea di comando in una sola riga di codice. In breve: è fantastico e può aiutare a portare i tuoi programmi al livello successivo.

Ecco come puoi usarlo per ravvivare i tuoi progetti Python.

Scrivere i programmi della riga di comando senza fare clic

È possibile scrivere programmi a 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 guida personalizzato. Vuoi aggiungere una nuova opzione? Quindi modificherete la vostra funzione di aiuto.

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

Ecco una semplice interfaccia a riga di comando codificata senza Click:

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 if len (args) == 0 : print ('Non hai passato alcun comando in!') else: for a in: se a == '--help': print ('Basic command line program') print ('Opzioni:') print (' --help -> mostra questo menu di aiuto di base. ') print (' --monty -> mostra una citazione Monty Python. ') print (' --veg -> mostra un vegetale casuale ') elif a ==' - monty ': print (' Cos'è questo, allora? "Romanes eunt domus"? La gente chiama Romanes, vanno, la casa? ") elif a == '--veg': print (random.choice ([' Carota ',' Potato ',' Rapa '])) else: print (' Argomento non riconosciuto. ') Se __name__ ==' __main__ ': do_work ()

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

Ecco la stessa logica con Click:

import click import random @ click.command () @ click.option ('- monty', default = False, help = "Mostra un preventivo Monty Python.") @ click.option ('- veg', default = False , help = "Mostra un ortaggio casuale.") def do_work (monty, veg): "" "L'esempio di clic base seguirà i tuoi comandi" "" se monty: print ('Cos'è questo, allora? "Romanes eunt domus "La gente chiama Romanes, loro vanno, la casa?") Se veg: print (random.choice (['Carrot', 'Potato', 'Turnip'])) if __name__ == '__main__': do_work ()

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

Questo confronto di base mostra quanto tempo e impegno puoi risparmiare usando programmi come Click. Sebbene l'interfaccia della riga di comando possa apparire uguale all'utente finale, il codice sottostante è più semplice e si risparmia molto tempo per la codifica. Eventuali modifiche o aggiornamenti scritti in futuro vedranno anche significativi aumenti del tempo di sviluppo.

Iniziare con Click for Python

Prima di usare Click, potresti voler configurare un ambiente virtuale Scopri come usare l'ambiente virtuale Python Impara come usare l'ambiente virtuale Python Se sei uno sviluppatore Python esperto, o sei appena iniziato, impara come configurare un ambiente virtuale è essenziale per qualsiasi progetto Python. Leggi di più . Questo fermerà i tuoi pacchetti Python in conflitto con il tuo sistema Python o altri progetti su cui potresti lavorare. Puoi anche provare Python nel tuo browser Prova Python nel tuo browser con queste shell interattive online gratis Prova Python nel tuo browser con queste conchiglie interattive online gratis Sia che tu stia esaminando questi esempi Python o rivedendo le basi degli array e degli elenchi, puoi prova 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 sulle differenze tra Python 2 e Python 3.

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

pip installare clic

Scrivi il tuo programma First Click

In un editor di testo, inizia con l'importazione Fai clic su:

Importa clic

Una volta importati, crea a metodo e a principale punto d'entrata. La nostra guida di Python OOP copre questi dettagli in maggior dettaglio, ma forniscono un posto dove memorizzare il codice e un modo per far sì che Python inizi a eseguirlo:

import click import random def veg (): "" "Il metodo di base restituirà una stampa casuale" "" print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ = = '__main__': veg ()

Questo script molto semplice emetterà un ortaggio casuale. Il tuo codice potrebbe essere diverso, ma questo semplice esempio è perfetto da combinare con Click.

Salva questo come click_example.py, e quindi eseguirlo nella riga di comando (dopo aver navigato fino alla sua posizione):

python click_example.py

Dovresti vedere un nome vegetale casuale. Miglioriamo le cose aggiungendo Click. Cambia il tuo codice per includere i decoratori Click 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à un ortaggio casuale" " "per numero nell'intervallo (totale): stampa (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) se __name__ == '__main__': veg ()

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

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

Il @ click.option decoratore configura fai clic 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 si specifica l'argomento totale quando si utilizza lo script, Click utilizzerà il valore predefinito.
  3. Aiuto: Una breve frase che spiega come usare il tuo programma.

Vediamo Fare clic in azione. Dalla riga di comando, esegui il tuo script, ma passa totale argomento come questo:

python click_example.py --totale 10

IMPOSTANDO -totale 10 dalla riga di comando, lo script stamperà dieci verdure casuali.

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

python click_example.py --help

Aggiungere più comandi

È possibile utilizzare molti decoratori Click sulla stessa funzione. Aggiungi un'altra opzione di clic al 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 in sugo bandiera:

python click_example.py --gravy y

Anche la schermata di aiuto è cambiata:

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

import click 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à un ortaggio casuale" "" per il numero nell'intervallo (totale): choice = random.choice ( ['Carrot', 'Potato', 'Turnip', 'Parsnip']) se sugo: print (f 'choice with gravy') else: print (choice) if __name__ == '__main__': veg ()

Ancora più opzioni di clic

Una volta che conosci le basi, puoi iniziare a guardare le opzioni di clic 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 nella nostra guida al dizionario Python.

Crea un nuovo file chiamato click_example_2.py. Ecco il codice di avviamento che ti serve:

import click import random @ click.command () def add (): "" "Il metodo di base aggiungerà due numeri insieme." "" passa if __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 ('- numbers', nargs = 2, type = int, help = "Aggiungi due numeri insieme.")

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

Infine, cambia il Inserisci metodo per accettare il numeri argomento, e fare qualche elaborazione con loro:

def add (numbers): "" "Il metodo di base aggiungerà due numeri insieme." "" risultato = numeri [0] + numeri [1] stampa (f 'numeri [0] + numeri [1] =  risultato')

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

python click_example_2.py - numeri 1 2

Fare clic su È la soluzione per le utilità Python

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

Se stai cercando alcuni progetti Python per mettere in pratica le tue nuove abilità trovate, perché non imparare come controllare un Arduino con Python Come programmare e controllare un Arduino con Python Come programmare e controllare un Arduino con Python Purtroppo, è impossibile per programmare direttamente un Arduino in Python, ma puoi controllarlo tramite USB usando un programma Python. Ecco come. Ulteriori informazioni o informazioni su come leggere e scrivere su Fogli Google con Python Come leggere e scrivere su Fogli Google con Python Come leggere e scrivere su Fogli Google Con Python Python 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!

Scopri di più su: Esercitazioni di codifica, Python.