Reklame

Click er en Python-pakke til skrivning af kommandolinjegrænseflader. Det producerer smuk dokumentation for dig og giver dig mulighed for at oprette kommandolinjegrænseflader i så lidt som en kodelinje. Kort sagt: det er fantastisk og kan hjælpe med at tage dine programmer til det næste niveau.

Sådan kan du bruge det til at livne dine Python-projekter.

Skrivning af kommandolinjeprogrammer uden klik

Det er muligt at skrive kommandolinjeprogrammer uden at bruge Click, men at gøre det kræver større indsats og meget mere kode. Du skal analysere kommandolinjeargumenter, udføre validering, udvikle logik til at håndtere forskellige argumenter og oprette en brugerdefineret hjælpemenu. Vil du tilføje en ny mulighed? Du ændrer derefter din hjælpefunktion.

Der er ikke noget galt i at skrive din egen kode, og at gøre det er en fantastisk måde at lære Python på, men Click giver dig mulighed for at følge principperne om "ikke gentage dig selv" (DRY). Uden klik skriver du kode, der er skrøbelig og kræver masser af vedligeholdelse, når der sker ændringer.

Her er en simpel kommandolinjegrænseflade kodet uden Klik:

importer sys. import tilfældig def do_work (): Funktion til at håndtere kommandolinjebrug args = sys.argv args = args [1:] # Første element i args er filnavnet hvis len (args) == 0: print ('Du har ikke bestået nogen kommandoer i!') ellers: for a i args: if a == '--help': print ('Basic command line program') print ('Options:') print ('- -hjælp -> vis denne grundlæggende hjælpemenu. ') print (' --monty -> vis et Monty Python-citat. ') print (' --veg -> vis en tilfældig grøntsag ') elif a ==' --monty ': print (' Hvad er det, derefter? "Romanes eunt domus"? Folk kaldte romaner, de går, huset? ') Elif a ==' --veg ': print (random.choice ([' Gulerod ',' Kartoffel ',' Næse '])) andet: print (' Ukendt argument '. ') hvis __name__ ==' __main__ ': do_work ()
Eksempel på Python-kommandolinjegrænseflade

Disse 27 linjer af Python fungerer godt, men er meget skrøbelige. Enhver ændring, du foretager i dit program, har brug for mange andre understøttelseskoder for at ændre. Hvis du ændrer et argumentnavn, skal du opdatere hjælpinformationen. Denne kode kan let vokse ud af kontrol.

Her er den samme logik med Click:

import klik. import tilfældig @ click.command () @ click.option ('- monty', default = False, help = 'Vis et Monty Python-tilbud.') @ click.option ('- veg', standard = Falsk, hjælp = 'Vis en tilfældig grøntsag.') def do_work (monty, veg): Grundlæggende klikeksempel vil følge dine kommandoer, hvis monty: print ('Hvad er dette, så? "Romanes eunt domus"? Folk kaldte romaner, de går, huset? ') Hvis veg: print (random.choice ([' Gulerod ',' Kartoffel ',' Næse '])) hvis __name__ ==' __main__ ': do_work ()

Dette klikeksempel implementerer den samme logik i 16 kodelinjer. Argumenterne er parset for dig, og hjælpeskærmen genereres:

Python Klik på automatisk genereret hjælpeskærm

Denne grundlæggende sammenligning viser, hvor meget tid og kræfter du kan spare ved hjælp af programmer som f.eks. Click. Selvom kommandolinjegrænsefladen kan vises den samme for slutbrugeren, er den underliggende kode enklere, og du sparer masser af tidskodning. Eventuelle ændringer eller opdateringer, du skriver i fremtiden, vil også se betydelige stigninger i udviklingstiden.

Kom godt i gang med Klik for Python

Før du bruger Click, kan du måske ønske det konfigurere et virtuelt miljø Lær hvordan du bruger det virtuelle Python-miljøUanset om du er en erfaren Python-udvikler, eller du lige er kommet i gang, er det vigtigt at lære at konfigurere et virtuelt miljø for ethvert Python-projekt. Læs mere . Dette stopper dine Python-pakker, der er i konflikt med dit system Python eller andre projekter, du muligvis arbejder på. Det kunne du også prøv Python i din browser Prøv Python i din browser med disse gratis online interaktive skallerUanset om du gennemgår disse Python-eksempler eller gennemgår det grundlæggende i arrays og lister, kan du teste koden lige i din browser. Her er de bedste online Python-tolke, vi har fundet. Læs mere hvis du vil lege med Python og Click.

Endelig skal du sikre dig, at du kører Python version 3. Det er muligt at bruge Click med Python version 2, men disse eksempler er i Python 3. Lær mere om forskelle mellem Python 2 og Python 3.

Når du er klar, skal du installere Klik fra kommandolinjen ved hjælp af PIP (hvordan man installerer PIP til Python):

pip install klik

Skrivning af dit første klik-program

I en teksteditor skal du starte med at importere Klik:

import klik

Når du er importeret, skal du oprette en metode og a vigtigste indgang. Vores Python OOP-guide dækker disse mere detaljeret, men de giver et sted at gemme din kode og en måde for Python at begynde at køre den på:

import klik. import tilfældig def veg (): Grundlæggende metode returnerer et tilfældigt vegetabilsk udskrivning (random.choice (['Gulerod', 'Kartoffel', 'Næse', 'Pastinøg'])) hvis __name__ == '__main__': veg ()

Dette meget enkle script giver en tilfældig grøntsag. Din kode kan se anderledes ud, men dette enkle eksempel er perfekt til at kombinere med Click.

Gem dette som click_example.py, og kør det derefter på kommandolinjen (efter at have navigeret til dens placering):

python click_example.py

Du skal se et tilfældigt vegetabilsk navn. Lad os forbedre tingene ved at tilføje Click. Skift din kode til at inkludere Click Decorators og a til loop:

@ Click.command () @ click.option ('- total', standard = 3, help = 'Antal grøntsager, der skal produceres.') def veg (i alt): Grundlæggende metode vil returnere en tilfældig grøntsag for antal inden for rækkevidde (i alt): print (random.choice (['gulerod', 'kartoffel', 'kålrot', 'pastinsnud'])) hvis __name__ == '__main__': veg ()

Når du kører, vil du se en tilfældig grøntsag vist tre gange.

Lad os fordele disse ændringer. Det @ Click.command () dekoratørkonfigurationer Klik for at arbejde med funktionen umiddelbart efter dekoratøren. I dette tilfælde er dette veg () fungere. Du har brug for dette til enhver metode, du gerne vil bruge med Click.

Det @ click.option dekoratør konfigurerer klik for at acceptere parametre fra kommandolinjen, som det vil videregive til din metode. Der er tre argumenter brugt her:

  1. -Total: Dette er kommandolinjens navn for Total argument.
  2. Standard: Hvis du ikke specificerer det samlede argument, når du bruger dit script, bruger Click værdien fra standard.
  3. Hjælp: En kort sætning, der forklarer, hvordan du bruger dit program.

Lad os se Klik i handling. Kør dit script fra kommandolinjen, men angiv Total argument som dette:

python click_example.py - total 10

Ved at indstille –Total 10 fra kommandolinjen udskriver dit script ti tilfældige grøntsager.

Hvis du passerer i -Hjælp markeres, ser du en dejlig hjælpeside sammen med de muligheder, du kan bruge:

python click_example.py - hjælp
Python Click-hjælp

Tilføjelse af flere kommandoer

Det er muligt at bruge mange Click-dekoratører på den samme funktion. Føj en anden klikfunktion til veg fungere:

@ click.option ('- sauce', standard = Falsk, hjælp = 'Tilføj "med sauce" på grøntsagerne.')

Glem ikke at videregive dette til metoden:

def veg (total, sauce):

Nu, når du kører din fil, kan du videregive sovs flag:

python click_example.py - alvorlig y

Hjælpeskærmen er også ændret:

Python Klik på hjælpeskærmen

Her er hele koden (med lidt mindre refactoring for pænhed):

import klik. import tilfældig @ click.command () @ click.option ('- sauce', standard = Falsk, hjælp = 'Tilføj "med sauce" på grøntsagerne.') @ click.option ('- total', standard = 3, help = 'Antal grøntsager, der skal produceres.') def veg (total, sauce): Grundlæggende metode vil returnere en tilfældig grøntsag for antallet i området (totalt): valg = random.choice (['gulerod', 'kartoffel', 'næse', 'pastinsnud']) hvis sauce: tryk (f '{valg} med sauce') andet: print (valg) hvis __name__ == '__main__': veg ()

Endnu flere klikindstillinger

Når du kender det grundlæggende, kan du begynde at se på mere komplekse klikmuligheder. I dette eksempel lærer du, hvordan du overfører flere værdier til et enkelt argument, som Click konverterer til en tuple. Du kan lære mere om tuples i vores guide til Python-ordbogen.

Opret en ny fil kaldet click_example_2.py. Her er den startkode, du har brug for:

import klik. import tilfældig @ click.command () def add (): Grundlæggende metode tilføjer to numre sammen. bestå hvis __name__ == '__main__': tilføj ()

Der er ikke noget nyt her. Det foregående afsnit forklarer denne kode detaljeret. Tilføj en @ click.option hedder numre:

@ click.option ('- numre', nargs = 2, type = int, help = 'Tilføj to numre sammen.')

Den eneste nye kode her er nargs = 2, og skrive = int muligheder. Dette fortæller Klik for at acceptere to værdier for numre mulighed, og at de begge skal være af typen heltal. Du kan ændre dette til ethvert nummer eller (gyldig) datatype, du kan lide.

Endelig skal du ændre tilføje metode til at acceptere numre argument, og foretage en vis behandling med dem:

def tilføje (tal): Grundlæggende metode tilføjer to numre sammen. result = numbers [0] + numbers [1] print (f '{numbers [0]} + {numbers [1]} = {result}')

Hver værdi, du indtaster, er tilgængelig via numre objekt. Sådan bruges det på kommandolinjen:

python click_example_2.py - tal 1 2
Python Click nargs resultat

Klik på Er løsningen for Python-hjælpeprogrammer

Som du har set, er Click let at bruge, men meget kraftfuld. Mens disse eksempler kun dækker de grundlæggende elementer i Click, er der mange flere funktioner, du kan lære om, nu når du har et solidt greb om det grundlæggende.

Hvis du leder efter nogle Python-projekter, du kan øve dine nye fundne færdigheder med, hvorfor ikke lære hvordan man styrer en Arduino med Python Sådan programmeres og styres en Arduino med PythonDesværre er det umuligt at direkte programmere en Arduino i Python, men du kan kontrollere den over USB ved hjælp af et Python-program. Sådan gør du. Læs mere , eller hvad med læse og skrive til Google Sheets med Python Sådan læses og skrives til Google Sheets With PythonPython kan virke mærkelig og usædvanlig, men det er let at lære og bruge. I denne artikel viser jeg dig, hvordan du læser og skriver til Google Sheets vha. Python. Læs mere ? Ét af disse projekter ville være perfekte til konvertering til Click!

Joe er uddannet inden for datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver droner eller skriver musik, kan han ofte findes, når han tager billeder eller producerer videoer.