Vil du lage dine egne Python-kommandolinjeprogrammer, men synes det er for vanskelig?  Bruk Click, et nyttig Python-verktøy for å effektivisere koden.

Hvordan lage dine egne kommandolinjeprogrammer i Python med klikk

Annonse Click er en Python-pakke for å skrive kommandolinjegrensesnitt. Den produserer vakker dokumentasjon for deg og lar deg bygge kommandolinjegrensesnitt på så lite som en kodelinje. Kort sagt: det er kjempebra og kan bidra til å ta programmene dine til neste nivå. Slik kan du bruke den til å livne opp Python-prosjektene dine. Å sk

Annonse

Click er en Python-pakke for å skrive kommandolinjegrensesnitt. Den produserer vakker dokumentasjon for deg og lar deg bygge kommandolinjegrensesnitt på så lite som en kodelinje. Kort sagt: det er kjempebra og kan bidra til å ta programmene dine til neste nivå.

Slik kan du bruke den til å livne opp Python-prosjektene dine.

Å skrive kommandolinjeprogrammer uten klikk

Det er mulig å skrive kommandolinjeprogrammer uten å bruke Click, men å gjøre det krever mer innsats og mye mer kode. Du må analysere kommandolinjeargumenter, utføre validering, utvikle logikk for å håndtere forskjellige argumenter og lage en tilpasset hjelpemeny. Vil du legge til et nytt alternativ? Du endrer hjelpefunksjonen din da.

Det er ingenting galt i å skrive din egen kode, og å gjøre det er en fin måte å lære Python, men Click lar deg følge prinsippene om "Ikke gjenta deg selv" (TØR). Uten Click skriver du kode som er skjør og krever mye vedlikehold hver gang endringer skjer.

Her er et enkelt kommandolinjegrensesnitt kodet uten Klikk:

 import sys import random def do_work(): """ Function to handle command line usage""" args = sys.argv args = args[1:] # First element of args is the file name if len(args) == 0: print('You have not passed any commands in!') else: for a in args: if a == '--help': print('Basic command line program') print('Options:') print(' --help -> show this basic help menu.') print(' --monty -> show a Monty Python quote.') print(' --veg -> show a random vegetable') elif a == '--monty': print('What\'s this, then? "Romanes eunt domus"? People called Romanes, they go, the house?') elif a == '--veg': print(random.choice(['Carrot', 'Potato', 'Turnip'])) else: print('Unrecognised argument.') if __name__ == '__main__': do_work() 

Eksempel på Python-kommandolinjegrensesnitt

Disse 27 linjene med Python fungerer bra, men er veldig skjøre. Enhver endring du gjør i programmet ditt vil trenge mange andre støttekoder for å endre. Hvis du endrer et argumentnavn, må du oppdatere hjelpinformasjonen. Denne koden kan lett vokse ut av kontroll.

Her er den samme logikken med Click:

 import click import random @click.command() @click.option('--monty', default=False, help='Show a Monty Python quote.') @click.option('--veg', default=False, help='Show a random vegetable.') def do_work(monty, veg): """ Basic Click example will follow your commands""" if monty: print('What\'s this, then? "Romanes eunt domus"? People called Romanes, they go, the house?') if veg: print(random.choice(['Carrot', 'Potato', 'Turnip'])) if __name__ == '__main__': do_work() 

Dette Click-eksempelet implementerer den samme logikken i 16 kodelinjer. Argumentene blir analysert for deg, og hjelpeskjermen genereres:

Python Klikk på automatisk generert hjelpeskjerm

Denne grunnleggende sammenligningen viser hvor mye tid og krefter du kan spare ved å bruke programmer som Click. Selv om kommandolinjegrensesnittet kan vises det samme for sluttbrukeren, er den underliggende koden enklere, og du sparer mye tid på koding. Eventuelle endringer eller oppdateringer du skriver i fremtiden vil også se betydelig utviklingstidsøkning.

Komme i gang med Klikk for Python

Før du bruker Click, kan det være lurt å konfigurere et virtuelt miljø Lær hvordan du bruker det virtuelle Python-miljøet Lær hvordan du bruker det virtuelle Python-miljøet Enten du er en erfaren Python-utvikler, eller du bare er i gang, lærer hvordan du konfigurerer et virtuelt miljø er viktig for ethvert Python-prosjekt. Les mer . Dette vil stoppe dine Python-pakker som er i konflikt med systemet Python eller andre prosjekter du kan jobbe med. Du kan også prøve Python i nettleseren din. Prøv Python i nettleseren din med disse gratis online interaktive skjellene. Prøv Python i nettleseren din med disse gratis online interaktive skjellene. Enten du går gjennom disse Python-eksemplene eller gjennomgår det grunnleggende om matriser og lister, kan du test koden rett i nettleseren din. Her er de beste online Python-tolker vi har funnet. Les mer hvis du vil leke med Python og Klikk.

Til slutt, sørg for at du kjører Python versjon 3. Det er mulig å bruke Click med Python versjon 2, men disse eksemplene er i Python 3. Lær mer om forskjellene mellom Python 2 og Python 3.

Når du er klar, installerer du Klikk fra kommandolinjen ved å bruke PIP (hvordan du installerer PIP for Python):

 pip install click 

Skrive ditt første klikk-program

I en tekstredigerer, start med å importere Klikk:

 import click 

Når du er importert, oppretter du en metode og et hovedinngangspunkt . Python OOP-guiden vår dekker disse mer detaljert, men de gir et sted å lagre koden din, og en måte for Python å begynne å kjøre den:

 import click import random def veg(): """ Basic method will return a random vegetable""" print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg() 

Dette veldig enkle skriptet vil gi en tilfeldig grønnsak. Koden din kan se annerledes ut, men dette enkle eksemplet er perfekt å kombinere med Click.

Lagre dette som click_example.py, og kjør det deretter på kommandolinjen (etter å ha navigert til stedet):

 python click_example.py 

Du bør se et tilfeldig grønnsaksnavn. La oss forbedre ting ved å legge til Klikk. Endre koden for å inkludere Click Decorators og en for loop:

 @click.command() @click.option('--total', default=3, help='Number of vegetables to output.') def veg(total): """ Basic method will return a random vegetable""" for number in range(total): print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg() 

Når du kjører, vil du se en tilfeldig grønnsak vist tre ganger.

La oss bryte ned disse endringene. @ Click.command () dekoratøren konfigurerer Klikk for å jobbe med funksjonen umiddelbart etter dekoratøren. I dette tilfellet er dette veg () -funksjonen. Du trenger dette for hver metode du vil bruke med Click.

@ Click.option- dekoratøren konfigurerer klikk for å godta parametere fra kommandolinjen, som den vil passere til metoden din. Det er tre argumenter brukt her:

  1. –Total: Dette er kommandolinjens navn for det totale argumentet.
  2. standard: Hvis du ikke spesifiserer det totale argumentet når du bruker skriptet ditt, vil Click bruke verdien fra standard.
  3. hjelp: En kort setning som forklarer hvordan du bruker programmet.

La oss se Klikk i aksjon. Kjør skriptet ditt fra kommandolinjen, men legg inn det totale argumentet som dette:

 python click_example.py --total 10 

Ved å sette –tall 10 fra kommandolinjen, vil skriptet skrive ut ti tilfeldige grønnsaker.

Hvis du passerer i flagget –hjelp, ser du en fin hjelpeside sammen med alternativene du kan bruke:

 python click_example.py --help 

Python Click hjelp

Legge til flere kommandoer

Det er mulig å bruke mange Click-dekoratører på samme funksjon. Legg til et nytt klikkalternativ til veg- funksjonen:

 @click.option('--gravy', default=False, help='Append "with gravy" to the vegetables.') 

Ikke glem å gi dette til metoden:

 def veg(total, gravy): 

Når du kjører filen din, kan du passere sjøflagget :

 python click_example.py --gravy y 

Hjelpeskjermen har også endret seg:

Python Click hjelpeskjerm

Her er hele koden (med litt mindre refactoring for penthet):

 import click import random @click.command() @click.option('--gravy', default=False, help='Append "with gravy" to the vegetables.') @click.option('--total', default=3, help='Number of vegetables to output.') def veg(total, gravy): """ Basic method will return a random vegetable""" for number in range(total): choice = random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']) if gravy: print(f'{choice} with gravy') else: print(choice) if __name__ == '__main__': veg() 

Enda flere klikkalternativer

Når du har kjent det grunnleggende, kan du begynne å se på mer komplekse klikkalternativer. I dette eksemplet lærer du hvordan du gir flere verdier til et enkelt argument, som Click vil konvertere til en tuple. Du kan lære mer om tuples i vår guide til Python-ordboken.

Lag en ny fil som heter click_example_2.py . Her er startkoden du trenger:

 import click import random @click.command() def add(): """ Basic method will add two numbers together.""" pass if __name__ == '__main__': add() 

Det er ikke noe nytt her. Den forrige delen forklarer denne koden i detalj. Legg til et @ click.option kalt tall :

 @click.option('--numbers', nargs=2, type=int, help='Add two numbers together.') 

Den eneste nye koden her er nargs = 2, og type = int- alternativene. Dette forteller Klikk for å godta to verdier for tallalternativet, og at de begge må være av heltall. Du kan endre dette til hvilket som helst nummer eller (gyldig) datatype du liker.

Endelig, endre leggemetoden for å godta tallargumentet, og gjør noen prosesser med dem:

 def add(numbers): """ Basic method will add two numbers together.""" result = numbers[0] + numbers[1] print(f'{numbers[0]} + {numbers[1]} = {result}') 

Hver verdi du sender inn er tilgjengelig gjennom tallobjektet. Slik bruker du det på kommandolinjen:

 python click_example_2.py --numbers 1 2 

Python Click nargs resultat

Klikk Er løsningen for Python-verktøy

Som du har sett, er Click lett å bruke, men veldig kraftig. Selv om disse eksemplene bare dekker det grunnleggende om Click, er det mange flere funksjoner du kan lære om nå som du har et godt grep om det grunnleggende.

Hvis du leter etter noen Python-prosjekter du kan øve på dine nye ferdigheter med, hvorfor ikke lære å kontrollere en Arduino med Python Hvordan programmere og kontrollere en Arduino med Python Hvordan programmere og kontrollere en Arduino med Python Dessverre er det umulig å direkte programmere en Arduino i Python, men du kan kontrollere den over USB ved hjelp av et Python-program. Dette er hvordan. Les mer, eller hva med å lese og skrive til Google Sheets with Python Hvordan lese og skrive til Google Sheets With Python Hvordan lese og skrive til Google Sheets With Python Python kan virke rart og uvanlig, men det er enkelt å lære og bruke. I denne artikkelen skal jeg vise deg hvordan du kan lese og skrive til Google Sheets ved hjelp av Python. Les mer ? Begge disse prosjektene ville være perfekte for å konvertere til Click!

Utforsk mer om: Kodingstutorials, Python.