Slik lager du dine egne kommandolinjeprogrammer i Python With Click

Slik lager du dine egne kommandolinjeprogrammer i Python With Click / programmering

Klikk på en Python-pakke for å skrive kommandolinjegrensesnitt. Den produserer vakker dokumentasjon for deg og lar deg bygge kommandolinjegrensesnitt i så lite som en linje med kode. Kort sagt: det er kjempebra og kan hjelpe med å ta programmene dine til neste nivå.

Slik kan du bruke den til å stimulere dine Python-prosjekter.

Skrive kommandolinjeprogrammer uten klikk

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

Det er ikke noe galt med å skrive din egen kode, og det er en fin måte å lære Python på, men Klikk lar deg følge “Ikke gjenta deg selv” (DRY) prinsipper. Uten Klikk, vil du skrive kode som er skjøre og krever mye vedlikehold når noen endringer skjer.

Her er et enkelt kommandolinjegrensesnitt kodet uten klikk:

import sys import tilfeldig def do_work (): "" "Funksjon for å håndtere kommandolinjebruke" "" args = sys.argv args = args [1:] # Første element av args er filnavnet hvis len (args) == 0 : print ('Du har ikke bestått noen kommandoer i!') ellers: for en i args: hvis en == '--help': print ('Basic command line program') print ('Options:') print --hjelp -> vis denne grunnleggende hjelpemenyen. ') print (' --monty -> vis et Monty Python sitat. ') print (' --veg -> vis en tilfeldig grønnsak ') elif a ==' - monty ': print (' Hva er dette da? 'Romanes eunt domus'? Folk som heter romere, går de, huset? ') elif a ==' --veg ': print (random.choice ([' Gulrot "," potet "," rotete "])) annet: skriv ut ('Ikke kjent argument.') Hvis __name__ == '__main__': do_work ()

Disse 27 linjene Python fungerer bra, men er veldig skjøre. Eventuelle endringer du gjør i programmet vil trenge mye annen støttekode som skal endres. Hvis du endrer et argumentnavn, må du oppdatere hjelpinformasjonen. Denne koden kan enkelt vokse ut av kontroll.

Her er samme logikk med klikk:

Importer klikk import tilfeldig @ click.command () @ click.option ('- monty', default = False, help = "Vis et Monty Python sitat.") @ click.option ('- veg', default = False , help = "Vis en tilfeldig grønnsak.") def do_work (monty, veg): "" "Basic klikk eksempel vil følge kommandoer dine" "" hvis monty: print ('Hva er dette da?' Romanes eunt domus "? Folk som heter romere, går de, huset?") Hvis veg: skriv ut (random.choice (['Gulrot', 'Potato', 'Turnip'])) hvis __name__ == '__main__': do_work ()

Dette Click-eksemplet implementerer samme logikk i 16 kodelinjer. Argumentene blir analysert for deg, og hjelpeskjermen genereres:

Denne grunnleggende sammenligningen viser hvor mye tid og innsats du kan lagre ved å bruke programmer som Klikk. Mens kommandolinjegrensesnittet kan vises det samme til sluttbrukeren, er den underliggende koden enklere, og du sparer mye tidskoding. Eventuelle endringer eller oppdateringer du skriver i fremtiden vil også se betydelige utviklingstidsøkninger.

Komme i gang med Klikk for Python

Før du bruker Klikk, kan du ønske å konfigurere et virtuelt miljø Lær hvordan du bruker Python Virtual Environment Lær hvordan du bruker Python Virtual Environment Uansett om du er en erfaren Python-utvikler, eller du er bare i gang, lærer du hvordan du konfigurerer et virtuelt miljø er avgjørende for ethvert Python-prosjekt. Les mer . Dette vil stoppe Python-pakkene dine i konflikt med systemet Python eller andre prosjekter du kanskje jobber 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 Uansett om du går gjennom disse Python-eksemplene eller vurderer grunnleggende om arrays og lister, kan du test koden rett i nettleseren din. Her er de beste online Python tolkene vi har funnet. Les mer hvis du vil leke med Python og Click.

Endelig sørg for at du kjører Python versjon 3. Det er mulig å bruke Klikk 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, installer Klikk fra kommandolinjen ved hjelp av PIP (hvordan installerer PIP for Python):

pip installasjon klikk

Skriver ditt første klikkprogram

I et tekstredigeringsprogram, start med å importere Klikk:

importer klikk

Når du er importert, opprett en metode og a hoved- inngangspunkt. Vår Python OOP guide dekker disse i større detalj, men de gir et sted å lagre koden din, og en måte for Python å begynne å kjøre den:

importere klikk import tilfeldig def veg (): "" "Grunnleggende metode vil returnere en tilfeldig grønnsak" "" utskrift (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) hvis __name__ = = '__main__': veg ()

Dette veldig enkle skriptet vil utgjøre en tilfeldig grønnsak. Koden din kan se annerledes ut, men dette enkle eksempelet er perfekt for å kombinere med klikk.

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

python click_example.py

Du bør se et tilfeldig vegetabilsk navn. La oss forbedre ting ved å legge til klikk. Endre koden din for å inkludere Click decorators og a til løkke:

@ click.command () @ click.option ('- total', default = 3, help = "Antall grønnsaker til utdata.") def veg (totalt): "" "Grunnmetoden returnerer en tilfeldig grønnsak" "for nummer i rekkevidde (totalt): skriv ut (random.choice (['Gulrot', 'Potet', 'Snupp', 'Pastin'])) hvis __name__ == '__main__': veg

Ved kjøring ser du en tilfeldig grønnsak som vises tre ganger.

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

De @ click.option dekoratørkonfigurasjoner klikk for å akseptere parametere fra kommandolinjen, som den vil passere til metoden din. Det er tre argumenter brukt her:

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

La oss se Klikk i handling. Fra kommandolinjen, kjør skriptet ditt, men passer inn i Total argument som dette:

python click_example.py - totalt 10

Ved innstilling -totalt 10 fra kommandolinjen vil skriptet skrive ut ti tilfeldige grønnsaker.

Hvis du passerer inn i -hjelp flagg, vil du se en fin hjelpeside sammen med alternativene du kan bruke:

python click_example.py --hjelp

Legge til flere kommandoer

Det er mulig å bruke mange Click decorators på samme funksjon. Legg til et annet klikkalternativ til veg funksjon:

@ click.option ('- saus', standard = False, help = "Legg til" med saus "til grønnsakene.")

Ikke glem å passere dette inn i metoden:

def veg (totalt, saus):

Nå når du kjører filen, kan du passere i saus flagg:

python click_example.py --gravy y

Hjelpskjermbildet har også blitt endret:

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

import klikk import tilfeldig @ click.command () @ click.option ('- saus', standard = False, help = "Legg til" med saus "til grønnsakene.") @ click.option ('- total' default = 3, help = "Antall grønnsaker til utgang.") def veg (totalt, saus): "" "Grunnmetoden returnerer en tilfeldig grønnsak" "" for tall i rekkevidde (totalt): valg = random.choice ['Gulrot', 'Potet', 'Snupp', 'Pastin']] hvis saus: skriv ut (f 'valg med saus') ellers: skriv ut (valg) hvis __name__ == '__main__': veg

Enda flere klikkalternativer

Når du vet det grunnleggende, kan du begynne å se på mer komplekse klikkalternativer. I dette eksemplet lærer du hvordan du sender 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.

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

importere klikk import tilfeldig @ click.command () def add (): "" "Grunnleggende metode vil legge til to numre sammen." "" pass hvis __name__ == '__main__': add ()

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

@ click.option ('- numbers', nargs = 2, type = int, help = "Legg til to tall sammen.")

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

Endelig, endre Legg til metode for å akseptere tall argument, og gjør litt behandling med dem:

def add numbers: "" "Basic metode vil legge til to tall sammen." "" resultat = tall [0] + tall [1] print (f 'tall [0] + tall [1] =  resultat')

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

python click_example_2.py - nummer 1 2

Klikk Er løsningen for Python Utilities

Som du har sett, er Click enkel å bruke, men veldig kraftig. Mens disse eksemplene bare dekker grunnleggende om Click, er det mange flere funksjoner du kan lære om nå som du har en solid forståelse av det grunnleggende.

Hvis du leter etter noen Python-prosjekter for å øve dine nye ferdigheter med, hvorfor ikke lære å kontrollere en Arduino med Python. Slik programmerer og styrer du en Arduino med Python. Slik programmerer og styrer du en Arduino med Python. Dessverre er det umulig å direkte programmere en Arduino i Python, men du kan styre den over USB ved hjelp av et Python-program. Dette er hvordan. Les mer, eller hva om lesing og skriving til Google-ark med Python Hvordan lese og skrive til Google-ark med python Hvordan lese og skrive til Google Ark med Python Python kan virke rart og uvanlig, men det er lett å lære og bruke. I denne artikkelen vil jeg vise deg hvordan du leser og skriver til Google Sheets ved hjelp av Python. Les mer ? Enten av disse prosjektene ville være perfekt for å konvertere til Click!

Utforsk mer om: Kodingstutorials, Python.