Programmering

Grunnleggende om analyse av kommandolinjeargumenter i Python

Grunnleggende om analyse av kommandolinjeargumenter i Python

Kommandolinjeapplikasjoner er en av de eldste og mest brukte apptypene. Hvis du er en erfaren Linux-bruker, har du knapt brukt GUI-verktøy i stedet for kommandolinjeverktøy for å gjøre den samme oppgaven. For eksempel har Anaconda, pakkebehandleren for python, kommandolinjeverktøy som heter Conda og GUI-verktøy som heter anaconda navigator.

Det som gjør Command-line-applikasjonen populær blant utviklere, er at de bruker svært få ressurser sammenlignet med GUI-motstykket og gir bedre ytelse.

Python er et enkelt og kraftig språk for å bygge kommandolinjeapplikasjoner. Det gir mange biblioteker som allerede er skrevet av mange flotte programmerere, noe som gjør oppgaven vår enklere, siden vi ikke trenger å skrive om den samme koden.

I denne opplæringen vil jeg presentere pythons Argparse-bibliotek for deg, som kan analysere argumenter for kommandolinjeapplikasjonene. Dette er nyttig for å bygge gode kommandolinjegrensesnitt. For å følge denne opplæringen anbefales det å ha den nyeste versjonen av python installert. Vi har også en trinnvis veiledning om hvordan du oppdaterer python til den siste versjonen i Linux.

Introduksjon

Argument Parsing er et viktig konsept vi må bruke for å bygge kraftige og brukervennlige kommandolinjegrensesnitt. Hvis du har brukt kommandolinjeprogrammer tidligere, har du kanskje lagt merke til at vi kan legge til argumenter i kommandolinjeprogrammene for å konfigurere verktøyets alternativer.

For eksempel hvis du har brukt ls kommando i Linux, som brukes til å liste opp gjeldende arbeidskatalogelementer, har du kanskje sett ut noe lignende, som vist på bildet nedenfor.

kommandoen i Linux

Som du kan se på bildet, viser den elementene i gjeldende katalog. Vi kan også bruke ls kommandoen mer fordelaktig ved å gi den et argument som jeg gjorde i følgende kommando.

ls -a

Nå når du skriver denne kommandoen i terminalen, vil den liste opp alle elementene som er tilstede i gjeldende arbeidskatalog, inkludert de skjulte elementene. Som du kan se, ved å gi argumenter på kommandoen, kan vi enkelt spesifisere alternativer til kommandoen på en vennlig måte. Det er her argumenter spiller inn. De gjør kommandolinjeapplikasjonene mer nyttige og vennlige.

Du lurer kanskje på når og hvordan du legger til kommandolinjeargumenter i applikasjonene dine. Tenk deg at du bygger et program som trenger brukerinngang til filnavnet som applikasjonen skal behandle.

Vi kan gjøre det på to måter:

Det første trikset er bra, men det andre er mer nyttig ettersom brukeren kan gi alle alternativene i en kommando, noe som gjør det mer brukervennlig.

Python inkluderer et flott bibliotek med navnet "argparse", som er nyttig for å lage og parsere kommandolinjeargumenter og kan bygge kraftige kommandolinjegrensesnitt for brukerne veldig enkelt. La oss ta et dypdykk i pythons argparse bibliotek.

Argparse bibliotek

De argparse bibliotek er en enkel og nyttig måte å analysere argumenter mens du bygger kommandolinjeprogrammer i python. Selv om det er andre argumenter som analyserer biblioteker som optparse, getopt, etc., de argparse biblioteket er offisielt den anbefalte måten å analysere kommandolinjeargumenter på.

Den er også tilgjengelig i pythons standardbibliotek, så vi trenger ingen manuell konfigurasjon. De argparse biblioteket er bygget ved hjelp av optparse bibliotek av python, men argparse er mer nyttig og utviklervennlig enn optparse bibliotek.

Praktisk demonstrasjon av Argparse

La oss se en praktisk demonstrasjon av hvordan du bruker argparse-biblioteket for å lage et enkelt kommandolinjegrensesnitt. Dette programmet godtar en bane og sjekker om banen eksisterer eller ikke, og om den eksisterer, og skriver deretter ut om den er en fil eller en katalog.

import os import argparse parser = argparse.ArgumentParser ('description = "Path Existence Checker") parser.add_argument ("- path", help = "skriv inn en bane for å sjekke om den eksisterer") args = parser.parse_args () input_path = args.sti hvis os.sti.isdir (input_path): print ("Banen eksisterer og det er en katalog") elif os.sti.isfile (input_path): print ("Banen eksisterer og det er en fil") annet: print ("Banen eksisterer ikke")
Når du kjører programmet ovenfor, kan vi sjekke om banen eksisterer eller ikke.

demo av parsing av argumenter med argparse

Du kan også bruke -h argument med programmet, som er standardargumentet for å vise hjelpemeldinger.

argparse standard hjelpemelding

La meg forklare deg hvordan programmet ovenfor fungerer. I de to første linjene importerte vi modulene som vi vil kreve i programmet. De os modulen er importert for å sjekke om banen eksisterer eller ikke, og er det en fil eller en katalog. Hvis du vil lære mer om os modul, kan du se vår guide om å jobbe med os i python.I neste linje importerte vi det argparse biblioteket som kreves for å opprette og analysere argumenter. I den tredje linjen oppretter vi et parserobjekt ved hjelp av ArgumentParser-klassen i argparse-biblioteket. Denne klassen godtar også en valgfri parameterbeskrivelse som vises i hjelpemeldingen.I neste linje har vi opprettet et argument med navnet path med add_argument () -metoden til parserobjektet og gir detaljene i hjelpeparameteren som vil bli vist i hjelpemeldingen som vi har sett i utgangen tidligere.Deretter analyserer vi argumentene ved hjelp av parse_args () -metoden til parserobjektet og får tilgang til brukerinngangsbanen som et argument. Vi fikk banen som brukeren skrev inn i argumentet, og brukte den sammen med os-modulen for å sjekke om det er en fil eller mappe. Hvis den ikke er blant de to, vil den skrive ut at banen ikke eksisterer.

Tilpasning

La oss se noen av tilpasningene vi kan gjøre for kommandolinjegrensesnittet vårt ved hjelp av argparse bibliotek.

Hjelp for tilpasset bruk

Når vi kjører demoprogrammet som vi opprettet tidligere med -h parameter, får vi programmets hjelp som utdata som argparse biblioteket genererte. Hvis du merker hjelpemeldingen, er det en brukshjelp i topplinjen som viser oss hvordan vi bruker den.I demo-programmet vårt har vi fått standard brukshjelp. Vi kan fortsatt enkelt tilpasse det ved å bruke bruksparameteren mens vi lager parserobjektet ved hjelp av klassen ArgumentParser (). Se på koden nedenfor, som skal endres i vårt demo-program.
parser = argparse.ArgumentParser (beskrivelse = "Path Existence Checker", bruk = "cla.py sti ")
Her er utgangen:

tilpasset bruk hjelp i argparse

Som vi ser i utdataene, er brukshjelpen endret til den vi spesifiserer i ArgumentParser () klassebrukparameter.

Tilpasse argumenter

Vi kan også bruke Argparse-biblioteket til å tilpasse argumentene som om argumentene er påkrevd eller ikke, noe som gir et argument en standardverdi.

Legger til standardverdi

Vi kan gi argumentene en standardverdi ved å bruke standardparameteren til add_argument () metode. Se for eksempel koden nedenfor.

import os import argparse parser = argparse.ArgumentParser (beskrivelse = "Path Existence Checker", bruk = "cla.py path ") parser.add_argument ("- path", help = "skriv inn en bane for å sjekke om den eksisterer", standard = "filnavn.txt ") args = parser.parse_args () input_path = args.sti hvis input_path == Ingen: exit () elif os.sti.isdir (input_path): print ("Banen eksisterer og det er en katalog") elif os.sti.isfile (input_path): print ("Banen eksisterer og det er en fil") annet: print ("Banen eksisterer ikke")

Når du kjører programmet ovenfor uten noe argument, vil vi få utdataene nedenfor. Som vist i utdataene, sjekker programmet banen filnavn.tekst, som vi setter i standardparameteren.

gir argumenter en standardverdi

Sette krav til argumenter

Vi kan også bruke Argparse-biblioteket til å stille argumentets krav, dvs.e., om argumentene vil være nødvendige eller ikke. For å gjøre det, må vi bruke den nødvendige parameteren, som vist i koden nedenfor.

import os import argparse parser = argparse.ArgumentParser (beskrivelse = "Path Existence Checker", bruk = "cla.py path ") parser.add_argument ("- path", help = "skriv inn en bane for å sjekke om den eksisterer", standard = "filnavn.txt ", required = True) args = parser.parse_args () input_path = args.sti hvis input_path == Ingen: exit () elif os.sti.isdir (input_path): print ("Banen eksisterer og det er en katalog") elif os.sti.isfile (input_path): print ("Banen eksisterer og det er en fil") annet: print ("Banen eksisterer ikke")

Når du kjører ovennevnte kode uten noen argumenter, vil du få en feilmelding om at følgende argumenter er påkrevd.

sette krav til argumenter

Type argument

Vi kan også angi datatypen som brukes i argumentet. For eksempel, hvis vi trenger banen, bør vi gi en streng datatype. Hvis en bruker skriver inn en datatype som ikke er en streng, vil Argparser endre den til en streng. For å angi standardtypen for et argument, kjør koden nedenfor.

import os import argparse parser = argparse.ArgumentParser (beskrivelse = "Path Existence Checker", bruk = "cla.py path ") parser.add_argument ("- path", help = "skriv inn en bane for å sjekke om den eksisterer", type = str) args = parser.parse_args () input_path = args.sti hvis input_path == Ingen: exit () elif os.sti.isdir (input_path): print ("Banen eksisterer og det er en katalog") elif os.sti.isfile (input_path): print ("Banen eksisterer og det er en fil") annet: print ("Banen eksisterer ikke")

Produksjon:

spesifisere datatypen for argumenter

Konklusjon

Dette er bare det grunnleggende for å analysere argumenter ved hjelp av Argparse-biblioteket. Etter å ha gått gjennom denne veiledningen, anbefales det å lese den offisielle dokumentasjonen for å utforske flere triks for bruk av dette biblioteket. Det kan også være lurt å se innlegget om bruk av innlogging i python, noe som er veldig nyttig for å skrive store applikasjoner og enkel feilsøking.

Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...
Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...