Cum să creați propriile programe de linie de comandă în Python With Click
Faceți clic este un pachet Python pentru scrierea interfețelor liniei de comandă. Acesta produce o documentație frumoasă pentru dvs. și vă permite să construiți interfețe de linie de comandă într-o singură linie de cod. Pe scurt: este minunat și vă poate ajuta să duceți programele la nivelul următor.
Iată cum puteți să-l utilizați pentru a vă îmbogăți proiectele Python.
Scrierea programelor de linie de comandă fără clic
Este posibil să scrieți programe de linie de comandă fără să utilizați clicul, dar acest lucru necesită mai mult efort și mult mai mult cod. Trebuie să analizați argumentele liniei de comandă, să efectuați validarea, să dezvoltați logica pentru a gestiona diferite argumente și să creați un meniu de ajutor personalizat. Doriți să adăugați o nouă opțiune? Veți modifica apoi funcția dvs. de ajutor.
Nu este nimic în neregulă cu scrierea propriului cod, iar acest lucru este o modalitate excelentă de a învăța Python, dar Click vă permite să urmați “Nu vă repetați” (DRY). Fără clic, veți scrie un cod care este fragil și necesită o mulțime de întreținere ori de câte ori se produc schimbări.
Iată o interfață simplă de linie de comandă codificată fără clic:
sys.argv args = args [1:] # Primul element al args este numele fișierului dacă len (args) == 0 : print ('Nu ați trecut nici o comandă în!') alt: pentru a args: if a == '--help': print (' --help -> afișează acest meniu de ajutor de bază. ') print (' --monty -> arată un citat Monty Python. ') print (' --veg - "elif a == '--veg': print (random.choice (['' '' ' "__Name__ == '__main__': do_work ()): altul: print ('Argument nerecunoscut'
Aceste 27 de linii de Python funcționează bine dar sunt foarte fragile. Orice modificare efectuată în programul dvs. va necesita modificarea unui alt cod de susținere. Dacă modificați un nume de argument, va trebui să actualizați informațiile de ajutor. Acest cod poate crește ușor de sub control.
Iată aceeași logică cu clicul:
import click import random @ @ click.option ('- veg', default = False, help = "Afișați un citat Monty Python") @ click.option (' , help = "Afișează o legumă aleatorie") def do_work (monty, veg): "" Exemplul Basic Click va urma comenzile dvs. "" dacă monty: print ("What's this? "__Name__ == '__main__': do_work ()" Oameni numiți romani, ei merg, casa? ") Dacă veg: print (random.choice ('
Acest exemplu de clic pune în aplicare aceeași logică în 16 rânduri de cod. Argumentele sunt analizate pentru dvs. și ecranul de ajutor este generat:
Această comparație de bază arată cât de mult timp și efort puteți salva folosind programe cum ar fi Clic. În timp ce interfața liniei de comandă poate apărea la fel pentru utilizatorul final, codul de bază este mai simplu și veți economisi o mulțime de timp de codificare. Orice modificări sau actualizări pe care le veți scrie în viitor vor avea, de asemenea, o creștere semnificativă a timpului de dezvoltare.
Noțiuni de bază cu clic pentru Python
Înainte de a utiliza Click, vă recomandăm să configurați un mediu virtual Aflați cum să utilizați mediul virtual Python Aflați cum să utilizați mediul virtual Python Fie că sunteți un dezvoltator experimentat Python, fie că începeți să învățați cum să configurați un mediu virtual este esențială pentru orice proiect Python. Citeste mai mult . Acest lucru va opri pachetele dvs. Python care intră în conflict cu sistemul dvs. Python sau cu alte proiecte despre care ați lucrat. Puteți încerca, de asemenea, Python în browserul dvs. Încercați Python în browser-ul dvs. Cu aceste Shell-uri interactive online gratuite Încercați Python în browser-ul dvs. Cu aceste Shell-uri interactive online gratuite Fie că treceți prin aceste exemple Python, fie că revizuiți elementele de bază ale tablourilor și al listelor testați codul în browserul dvs. Iată cele mai bune interpreți Python online pe care le-am găsit. Citiți mai multe dacă doriți să jucați cu Python and Click.
În cele din urmă, asigurați-vă că executați versiunea Python 3. Este posibil să utilizați Clic cu Python versiunea 2, dar aceste exemple sunt în Python 3. Aflați mai multe despre diferențele dintre Python 2 și Python 3.
După ce ați gata, instalați clic pe linia de comandă folosind PIP (cum se instalează PIP pentru Python):
pip install click
Scrierea programului dvs. pentru primul clic
Într-un editor de text, începeți prin importul Faceți clic pe:
faceți clic pe import
După importare, creați un metodă și a principal punct de intrare. Ghidul nostru Python OOP le acoperă mai detaliat, dar ele oferă un spațiu pentru stocarea codului dvs. și o modalitate prin care Python începe să îl ruleze:
import click import random def veg (): "" Metoda de bază va returna o imprimare aleatoare "" "(random.choice (" Carrot "," Potato "," Turnip "," Parsnip " = '__main__': veg ()
Acest script foarte simplu va scoate o legumă aleatoare. Codul dvs. poate arăta diferit, dar acest exemplu simplu este perfect pentru a fi combinat cu clicul.
Salvați ca click_example.py, și apoi executați-o în linia de comandă (după ce navigați la locația sa):
python click_example.py
Ar trebui să vedeți un nume de legume aleatoriu. Să îmbunătățim lucrurile adăugând clic pe. Modificați codul pentru a include decoratorii Click și a pentru buclă:
@ click.command () @ click.option ('- total', default = 3, help = "Număr de legume la ieșire") def veg (total): " "pentru numărul în intervalul (total): print (random.choice ('Carrot', 'Potato', 'Turnip', 'Parsnip'))) __name__ == '__main__': veg
După ce ați rulat, veți vedea o lebădă aleatorie afișată de trei ori.
Hai să descompunem aceste schimbări. @ Click.command () decorator configurează Faceți clic pentru a lucra cu funcția care urmează imediat după decorator. În acest caz, acesta este veg () funcţie. Veți avea nevoie de aceasta pentru fiecare metodă pe care doriți să o utilizați cu clic pe.
@ click.option decoratorul configurează clic pentru a accepta parametrii din linia de comandă, pe care le va trece la metoda dvs. Există trei argumente utilizate aici:
- -total: Acesta este numele liniei de comandă pentru total argument.
- Mod implicit: Dacă nu specificați argumentul total atunci când utilizați scriptul dvs., Faceți clic pe va utiliza valoarea din implicit.
- Ajutor: O scurtă propoziție care explică modul de utilizare a programului.
Să vedem clic pe acțiune. Din linia de comandă, executați scriptul, dar treceți în total argument astfel:
python click_example.py - total 10
Prin setare -total 10 din linia de comandă, scriptul dvs. va imprima zece legume aleatoare.
Dacă treceți în -Ajutor flag, veți vedea o pagină de ajutor drăguță, împreună cu opțiunile pe care le puteți utiliza:
python click_example.py --help
Adăugarea de mai multe comenzi
Este posibil să utilizați mulți decoratori Click pe aceeași funcție. Adăugați o altă opțiune de clic pe veg funcţie:
@ click.option ('- gravy', default = False, help = "Adăugați" cu sosul "la legume").
Nu uitați să treceți această metodă:
def veg (total, sos):
Acum, când rulați fișierul, puteți trece în zeamă steag:
python click_example.py - selectați
De asemenea, ecranul de ajutor a fost modificat:
Iată întregul cod (cu unele refactorizări minore pentru claritate):
import click import random @ click.command () @ click.option ('- gravy', default = False, help = "Adăugați" cu sos de legume ") @ click.option (' implicit = 3, ajutor = "Numărul de legume la ieșire") def veg (total, sos): "" Metoda de bază va returna o " (Alegeți) dacă __name__ == '__main__': veg () ("Morcov", "Potato", "Turnip", "Parsnip"
Chiar și mai multe opțiuni de clic
Odată ce cunoașteți elementele de bază, puteți începe să vă uitați la opțiunile de clic mai complexe. În acest exemplu, veți învăța cum să treceți în mai multe valori într-un singur argument, pe care Click se va transforma într-un tuplu. Puteți afla mai multe despre tupluri în ghidul nostru în dicționarul Python.
Creați un fișier nou numit click_example_2.py. Iată codul de pornire de care aveți nevoie:
import import click random @ click.command () def add (): "" "Metoda de bază va adăuga două numere împreună" "" pass if __name__ == '__main__': add
Nu este nimic nou aici. Secțiunea anterioară explică în detaliu acest cod. Adauga o @ click.option denumit numerele:
@ click.option ('- numere', nargs = 2, type = int, help = "Adăugați două numere împreună.")
Singurul cod nou aici este nargs = 2, si tip = int Opțiuni. Acest lucru spune Faceți clic pentru a accepta două valori pentru numerele și că ambele trebuie să fie de întregi de tip. Puteți schimba acest lucru la orice număr sau tip de date (valabil) care vă place.
În cele din urmă, schimbați adăuga metoda de a accepta numerele argument, și face unele prelucrare cu ei:
(numere): "" Metoda de bază va adăuga două numere împreună "" "rezultat = numere [0] + numere [1] print (f 'numere [0] rezultat')
Fiecare valoare pe care o introduceți este accesibilă prin numerele obiect. Iată cum se utilizează în linia de comandă:
python click_example_2.py - numere 1 2
Faceți clic pe Soluția pentru utilitarele Python
După cum ați văzut, clicul este ușor de folosit, dar foarte puternic. În timp ce aceste exemple acoperă numai elementele de bază ale clicului, există multe caracteristici pe care le puteți învăța acum, că aveți o înțelegere solidă a principiilor de bază.
Dacă sunteți în căutarea unor proiecte Python pentru a vă exersa noile abilități găsite, de ce să nu învățați cum să controlați un Arduino cu Python Cum să programați și să controlați un Arduino cu Python Cum să programați și să controlați un Arduino cu Python Din păcate, este imposibil pentru a programa direct un arduino în Python, dar îl puteți controla prin USB folosind un program Python. Iată cum. Citiți mai multe sau cum să citiți și să scrieți la Foi de calcul Google cu Python Cum să citiți și să scrieți în foile Google cu Python Cum să citiți și să scrieți în foile Google Cu Python Python poate părea ciudat și neobișnuit, totuși este ușor de învățat și de utilizat. În acest articol, vă vom arăta cum să citiți și să scrieți în Foi de calcul Google folosind Python. Citeste mai mult ? Fiecare dintre aceste proiecte ar fi perfect pentru conversia la Click!
Explorați mai multe despre: Coding Tutorials, Python.