Annons

Click är ett Python-paket för att skriva kommandoradsgränssnitt. Det ger vacker dokumentation för dig och låter dig bygga kommandoradgränssnitt i så lite som en kodrad. Kort sagt: det är fantastiskt och kan hjälpa dig att ta dina program till nästa nivå.

Så här kan du använda det för att liva upp dina Python-projekt.

Skriva kommandoradsprogram utan klick

Det är möjligt att skriva kommandoradsprogram utan att använda Click, men att göra det kräver mer ansträngning och mycket mer kod. Du måste analysera kommandoradsargument, utföra validering, utveckla logik för att hantera olika argument och bygga en anpassad hjälpmeny. Vill du lägga till ett nytt alternativ? Du kommer att ändra din hjälpfunktion då.

Det är inget fel med att skriva din egen kod, och att göra det är ett bra sätt att lära sig Python, men Klicka låter dig följa principerna "Don’t Repeat Yourself" (DRY). Utan klick skriver du kod som är ömtålig och kräver mycket underhåll varje gång ändringar sker.

Här är ett enkelt kommandoradsgränssnitt kodat utan klick:

instagram viewer
importera sys. importera slumpmässigt def do_work (): Funktion för att hantera kommandoradsanvändning args = sys.argv args = args [1:] # Första elementet i args är filnamnet om len (args) == 0: print ('Du har inte gått några kommandon i!') annars: för a i args: if a == '--help': print ('Basic command line program') print ('Options:') print ('- -hjälp -> visa den här grundläggande hjälpmenyn. ') print (' --monty -> visa en Monty Python-offert. ') print (' --veg -> visa en slumpmässig grönsak ') elif a ==' --monty ': print (' Vad är det här, sedan? "Romanes eunt domus"? Människor kallade Romanes, de går, huset? ') Elif a ==' --veg ': tryck (random.choice ([' Morot ',' Potato ',' Turnip '])) annat: print ("Okänt argument". ') om __name__ ==' __main__ ': do_work ()
Exempel på Python-kommandoradgränssnitt

Dessa 27 linjer med Python fungerar bra men är mycket ömtåliga. Varje ändring du gör i ditt program kommer att behöva massor av annan stödkod för att ändra. Om du ändrar ett argumentnamn måste du uppdatera hjälpinformationen. Denna kod kan enkelt växa ut ur kontroll.

Här är samma logik med Click:

importera klick. importera slumpmässiga @ click.command () @ click.option ('- monty', default = False, help = 'Visa en Monty Python-offert.') @ click.option ('- veg', default = False, help = 'Visa en slumpmässig grönsak.') def do_work (monty, veg): Grundläggande klickexempel följer dina kommandon om monty: print ('Vad är det här, då? "Romanes eunt domus"? Folk kallade Romanes, de går, huset? ') Om grönt: print (random.choice ([' Morot ',' Potato ',' Turnip '])) om __name__ ==' __main__ ': do_work ()

Detta klickexempel implementerar samma logik i 16 kodrader. Argumenten analyseras för dig och hjälpfönstret genereras:

Python Klicka på automatiskt genererad hjälpskärm

Denna grundläggande jämförelse visar hur mycket tid och ansträngning du kan spara genom att använda program som Click. Även om kommandoradsgränssnittet kan se ut samma för slutanvändaren, är den underliggande koden enklare och du sparar massor av tidskodning. Eventuella ändringar eller uppdateringar du skriver i framtiden ser också betydande utvecklingstidsökningar.

Komma igång med Klicka för Python

Innan du använder Click, kanske du vill konfigurera en virtuell miljö Lär dig hur du använder den virtuella Python-miljönOavsett om du är en erfaren Python-utvecklare, eller om du bara är igång, är det viktigt att lära sig att ställa in en virtuell miljö för alla Python-projekt. Läs mer . Detta kommer att stoppa dina Python-paket som står i konflikt med ditt system Python eller andra projekt du kanske arbetar med. Du kan också prova Python i din webbläsare Prova Python i din webbläsare med dessa gratis interaktiva skal onlineOavsett om du går igenom dessa Python-exempel eller granskar grunderna i matriser och listor kan du testa koden direkt i din webbläsare. Här är de bästa Python-tolkarna online som vi har hittat. Läs mer om du vill leka med Python och Click.

Slutligen, se till att du kör Python version 3. Det är möjligt att använda Click with Python version 2, men dessa exempel finns i Python 3. Läs mer om skillnader mellan Python 2 och Python 3.

När du är klar installerar du Klicka från kommandoraden med PIP (hur man installerar PIP för Python):

pip install klicka

Skriva ditt första klickprogram

Börja med att importera i en textredigerare Klicka:

importera klick

När du har importerats skapar du en metod och a huvud inkörsport. Vår Python OOP-guide täcker dessa mer i detalj, men de ger en plats att lagra din kod och ett sätt för Python att börja köra den:

importera klick. importera slumpmässigt def veg (): Grundläggande metod kommer att returnera ett slumpmässigt grönsakstryck (random.choice (['Morot', 'Potato', 'Turnip', 'Parsnip'])) om __name__ == '__main__': veg ()

Detta mycket enkla skript kommer att ge en slumpmässig grönsak. Din kod kan se annorlunda ut, men detta enkla exempel är perfekt att kombinera med Click.

Spara detta som click_example.pyoch kör den sedan på kommandoraden (efter att ha navigerat till dess plats):

python click_example.py

Du bör se ett slumpmässigt grönsaknamn. Låt oss förbättra saker genom att lägga till Click. Ändra din kod så att du inkluderar Click Decorators och a för slinga:

@ Click.command () @ click.option ('- total', standard = 3, help = 'Antal grönsaker som ska produceras.') def veg (totalt): Grundläggande metod kommer att returnera en slumpmässig grönsak för antal inom räckvidd (totalt): tryck (random.choice (['Morot', 'Potato', 'Turnip', 'Parsnip'])) om __name__ == '__main__': veg ()

När du kör, ser du en slumpmässig grönsak som visas tre gånger.

Låt oss dela upp dessa förändringar. De @ Click.command () dekoratörskonfigurationer Klicka för att arbeta med funktionen direkt efter dekoratören. I det här fallet är detta veg () fungera. Du behöver detta för varje metod du vill använda med Click.

De @ click.option dekoratör konfigurerar klick för att acceptera parametrar från kommandoraden, som den kommer att skicka till din metod. Det finns tre argument som används här:

  1. -total: Detta är kommandoradsnamnet för total argument.
  2. standard: Om du inte anger det totala argumentet när du använder ditt skript använder Click värdet från standard.
  3. hjälp: En kort mening som förklarar hur du använder ditt program.

Låt oss se Klicka i handling. Kör ditt skript från kommandoraden, men skicka in total argument som detta:

python click_example.py - total 10

Genom att sätta –Total 10 från kommandoraden kommer ditt skript att skriva ut tio slumpmässiga grönsaker.

Om du passerar in -hjälp flagga, ser du en trevlig hjälpsida tillsammans med alternativen du kan använda:

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

Lägga till fler kommandon

Det är möjligt att använda många klickdekoratörer för samma funktion. Lägg till ytterligare ett klickalternativ till veg fungera:

@ click.option ('- sås', standard = Falskt, hjälp = 'Lägg till "med sås" till grönsakerna.')

Glöm inte att skicka detta till metoden:

def veg (totalt, sås):

Nu när du kör din fil kan du skicka in skysås flagga:

python click_example.py - gravy y

Hjälpskärmen har också ändrats:

Python Click hjälpskärm

Här är hela koden (med lite mindre refactoring för finhet):

importera klick. importera slumpmässiga @ click.command () @ click.option ('- sås', standard = Falskt, hjälp = 'Lägg till "med sås" till grönsakerna.') @ click.option ('- total', standard = 3, help = 'Antal grönsaker som ska produceras.') def veg (totalt, sås): Grundläggande metod kommer att returnera en slumpmässig grönsak för antal inom intervall (totalt): val = random.choice (["morot", "potatis", "kålrot", "pastin") om sås: tryck (f '{val} med sås') annat: tryck (val) om __name__ == '__main__': veg ()

Ännu fler klickalternativ

När du känner till grunderna kan du börja titta på mer komplexa klickalternativ. I det här exemplet lär du dig att överföra flera värden till ett enda argument, som klickar om till en tupel. Du kan lära dig mer om tuples i vår guide till Python-ordboken.

Skapa en ny fil som heter click_example_2.py. Här är startkoden du behöver:

importera klick. importera slumpmässiga @ click.command () def add (): Grundläggande metod lägger till två siffror tillsammans. passera om __name__ == '__main__': lägg till ()

Det finns inget nytt här. Det föregående avsnittet förklarar den här koden i detalj. Lägg till en @ click.option kallad tal:

@ click.option ('- siffror', nargs = 2, typ = int, help = 'Lägg till två siffror tillsammans.')

Den enda nya koden här är nargs = 2, och den typ = int alternativ. Detta berättar Klicka för att acceptera två värden för tal och att de båda måste vara av heltal av typen. Du kan ändra detta till valfritt nummer eller (giltig) datatyp.

Ändra slutligen Lägg till metod för att acceptera tal argument och gör en del behandling med dem:

def add (nummer): Grundläggande metod lägger till två nummer tillsammans. result = numbers [0] + numbers [1] print (f '{numbers [0]} + {numbers [1]} = {result}')

Varje värde du skickar in är tillgängligt via tal objekt. Så här använder du det på kommandoraden:

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

Klicka på Är lösningen för Python-verktyg

Som du har sett är Click lätt att använda men mycket kraftfullt. Även om dessa exempel bara täcker de grunderna i Click, finns det många fler funktioner du kan lära dig om nu när du har ett bra grepp om grunderna.

Om du letar efter några Python-projekt att öva på dina nya färdigheter med, varför inte lära dig hur man styr en Arduino med Python Hur man programmerar och kontrollerar en Arduino med PythonTyvärr är det omöjligt att direkt programmera en Arduino i Python, men du kan styra den över USB med hjälp av ett Python-program. Här är hur. Läs mer , eller hur läsa och skriva till Google Sheets med Python Hur man läser och skriver till Google Sheets With PythonPython kan verka konstigt och ovanligt, men det är lätt att lära sig och använda. I den här artikeln visar jag dig hur du läser och skriver till Google Sheets med Python. Läs mer ? Ett av dessa projekt skulle vara perfekt för att konvertera till Click!

Joe är en examen i datavetenskap från University of Lincoln, Storbritannien. Han är en professionell mjukvaruutvecklare, och när han inte flyger drönare eller skriver musik kan han ofta hitta foton eller producera videor.