Programmeren

Basisprincipes van het ontleden van opdrachtregelargumenten in Python

Basisprincipes van het ontleden van opdrachtregelargumenten in Python

Opdrachtregeltoepassingen zijn een van de oudste en meest gebruikte typen apps. Als je een ervaren Linux-gebruiker bent, heb je misschien nauwelijks GUI-tools gebruikt in plaats van command-line tools om dezelfde taak uit te voeren. Anaconda, de pakketbeheerder voor python, heeft bijvoorbeeld opdrachtregelprogramma's met de naam Conda en een GUI-tool met de naam anaconda navigator.

Het ding dat de Command-line-applicatie populair maakt onder ontwikkelaars, is dat ze heel weinig bronnen verbruiken in vergelijking met de GUI-tegenhanger en betere prestaties leveren.

Python is een eenvoudige en krachtige taal voor het bouwen van opdrachtregeltoepassingen. Het biedt talloze bibliotheken die al door veel geweldige programmeurs zijn geschreven, wat onze taak eenvoudiger maakt omdat we niet dezelfde code hoeven te herschrijven.

In deze zelfstudie zal ik de Argparse-bibliotheek van de python aan u presenteren, die argumenten van de opdrachtregeltoepassingen kan ontleden. Dit is handig voor het bouwen van geweldige opdrachtregelinterfaces. Om deze tutorial te volgen, is het raadzaam om de nieuwste versie van python te installeren. We hebben ook een stapsgewijze zelfstudie over het bijwerken van python naar de nieuwste versie in Linux.

Invoering

Argumentparsering is een belangrijk concept dat we moeten gebruiken om krachtige en gebruiksvriendelijke opdrachtregelinterfaces te bouwen. Als u eerder opdrachtregeltoepassingen hebt gebruikt, is het u misschien opgevallen dat we argumenten aan de opdrachtregeltoepassingen kunnen toevoegen om de opties van de tool te configureren.

Als u bijvoorbeeld de ls commando in Linux, dat wordt gebruikt om de huidige werkdirectory-items weer te geven, hebt u mogelijk iets soortgelijks gezien, zoals weergegeven in de onderstaande afbeelding.

ls-opdracht in Linux

Zoals je in de afbeelding kunt zien, worden de items in de huidige map weergegeven. We kunnen ook de ls commando voordeliger door het een argument te geven zoals ik deed in het volgende commando:.

ls -a

Als u nu deze opdracht in de terminal typt, worden alle items weergegeven die aanwezig zijn in de huidige werkmap, inclusief de verborgen items. Zoals je kunt zien, kunnen we, door argumenten voor de opdracht te geven, gemakkelijk op een vriendelijke manier opties voor de opdracht specificeren. Dit is waar argumenten in het spel komen. Ze maken de opdrachtregeltoepassingen nuttiger en vriendelijker.

U vraagt ​​zich misschien af ​​wanneer en hoe u opdrachtregelargumenten in uw toepassingen kunt toevoegen. Stel je voor dat je een applicatie bouwt die een gebruikersinvoer nodig heeft van de bestandsnaam die de applicatie zal verwerken will.

We kunnen het op twee manieren doen:

De eerste truc is goed, maar de tweede is handiger omdat de gebruiker alle opties in één opdracht kan geven, wat het gebruiksvriendelijker maakt.

Python bevat een geweldige bibliotheek met de naam "argparse", die handig is voor het maken en ontleden van opdrachtregelargumenten en waarmee zeer eenvoudig krachtige opdrachtregelinterfaces voor de gebruikers kunnen worden gebouwd. Laten we een diepe duik nemen in de argparse-bibliotheek van de python.

Argparse-bibliotheek

De argparse bibliotheek is een gemakkelijke en handige manier om argumenten te ontleden tijdens het bouwen van opdrachtregeltoepassingen in python. Hoewel er andere argumenten zijn om bibliotheken te ontleden, zoals: optparse, getopt, enz., de argparse bibliotheek is officieel de aanbevolen manier om opdrachtregelargumenten te ontleden.

Het is ook beschikbaar in de standaardbibliotheek van de python, dus we hebben geen handmatige configuratie nodig. De argparse bibliotheek is gebouwd met behulp van de optparse bibliotheek van python, maar argparse is nuttiger en ontwikkelaarsvriendelijker dan de optparse bibliotheek.

Praktische demo van Argparse

Laten we een praktische demo bekijken van het gebruik van de argparse-bibliotheek voor het maken van een eenvoudige opdrachtregelinterface. Dit programma accepteert een pad en controleert of het pad bestaat of niet en als het bestaat, drukt u af of het een bestand of een map is.

import os import argparse parser = argparse.ArgumentParser('description = "Path Existence Checker") parser.add_argument("--path", help="voer een pad in om te controleren of het bestaat") args = parser.parse_args() input_path = args.pad als os.pad.isdir(input_path): print("Het pad bestaat en het is een directory") elif os.pad.isfile(input_path): print("Het pad bestaat en het is een bestand") else: print("Het pad bestaat niet")
Bij het uitvoeren van het bovenstaande programma kunnen we controleren of het pad bestaat of niet.

demo van het ontleden van argumenten met argparse

U kunt ook de -h argument met het programma, wat het standaardargument is voor het weergeven van helpberichten.

argparse standaard helpbericht

Laat me je uitleggen hoe het bovenstaande programma werkt. In de eerste twee regels hebben we de modules geïmporteerd die we in het programma nodig hebben. De os module is geïmporteerd om te controleren of het pad bestaat of niet, en is het een bestand of een map. Als u meer wilt weten over de os module, kunt u onze gids raadplegen over het werken met os in python.In de volgende regel hebben we de argparse-bibliotheek geïmporteerd die nodig is om argumenten te maken en te ontleden. In de derde regel maken we een parser-object met behulp van de ArgumentParser-klasse van de argparse-bibliotheek. Deze klasse accepteert ook een optionele parameterbeschrijving, die wordt weergegeven in het helpbericht.In de volgende regel hebben we een argument met de naam path gemaakt met behulp van de methode add_argument() van het parser-object en geven we de details in de helpparameter die in het helpbericht wordt weergegeven, zoals we eerder in de uitvoer hebben gezien.Vervolgens ontleden we de argumenten met behulp van de methode parse_args() van het parserobject en openen we het invoerpad van de gebruiker als argument. We kregen het pad dat de gebruiker in het argument invoerde en gebruikten het vervolgens met de os-module om te controleren of het een bestand of map is. Als het niet tussen de twee staat, wordt afgedrukt dat het pad niet bestaat.

Maatwerk

Laten we eens kijken naar enkele van de aanpassingen die we kunnen doen aan onze opdrachtregelinterface met behulp van de argparse-bibliotheek.

Hulp bij aangepast gebruik

Wanneer we het demoprogramma uitvoeren dat we eerder hebben gemaakt met de -h parameter, krijgen we de hulp van het programma als de uitvoer die de argparse-bibliotheek heeft gegenereerd. Als u het hulpbericht ziet, is er een gebruikshulp in de bovenste regel die ons laat zien hoe u het kunt gebruiken.In ons demoprogramma hebben we de standaard gebruikshulp. We kunnen het nog steeds gemakkelijk aanpassen door de gebruiksparameter te gebruiken terwijl we het parser-object maken met behulp van de klasse ArgumentParser(). Kijk naar de onderstaande code, die zal worden aangepast in ons demoprogramma.
parser = argparse.ArgumentParser(description = "Path Existence Checker", gebruik = "cla.py-pad")
Hier is de uitvoer:

hulp bij aangepast gebruik in argparse

Zoals we in de uitvoer kunnen zien, is de gebruikshulp gewijzigd in degene die we specificeren in de ArgumentParser() class gebruiksparameter.

Argumenten aanpassen

We kunnen ook de Argparse-bibliotheek gebruiken om de argumenten aan te passen, zoals of de argumenten vereist zijn of niet, waardoor een argument een standaardwaarde krijgt.

Standaardwaarde toevoegen

We kunnen de argumenten een standaardwaarde geven met behulp van de standaardparameter aan de add_argument() methode. Zie bijvoorbeeld de onderstaande code:.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", gebruik = "cla.py pad") parser.add_argument("--path", help="voer een pad in om te controleren of het bestaat", default="filename.txt") args = parser.parse_args() input_path = args.pad if input_path == Geen: exit() elif os.pad.isdir(input_path): print("Het pad bestaat en het is een directory") elif os.pad.isfile(input_path): print("Het pad bestaat en het is een bestand") else: print("Het pad bestaat niet")

Bij het uitvoeren van het bovenstaande programma zonder enig argument, krijgen we de onderstaande uitvoer:. Zoals getoond in de uitvoer, controleert het programma het pad bestandsnaam.tekst, die we instellen in de standaardparameter.

een standaardwaarde geven aan argumenten

Vereisten voor argumenten stellen

We kunnen ook de Argparse-bibliotheek gebruiken om de vereisten van het argument in te stellen, i.e., of de argumenten nodig zijn of niet. Om dit te doen, moeten we de vereiste parameter gebruiken, zoals weergegeven in de onderstaande code:.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", gebruik = "cla.py pad") parser.add_argument("--path", help="voer een pad in om te controleren of het bestaat", default="filename.txt", required=True) args = parser.parse_args() input_path = args.pad if input_path == Geen: exit() elif os.pad.isdir(input_path): print("Het pad bestaat en het is een directory") elif os.pad.isfile(input_path): print("Het pad bestaat en het is een bestand") else: print("Het pad bestaat niet")

Als u de bovenstaande code uitvoert zonder argumenten, krijgt u een foutmelding dat de volgende argumenten vereist zijn:.

de eisen van argumenten stellen

Soort argument

We kunnen ook het gegevenstype instellen dat in het argument wordt gebruikt. Als we bijvoorbeeld het pad nodig hebben, moeten we een gegevenstype string geven give. Als een gebruiker een gegevenstype invoert dat geen string is, zal Argparser dit veranderen in een string. Voer de onderstaande code uit om het standaardtype voor een argument in te stellen:.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", gebruik = "cla.py pad") parser.add_argument("--path", help="voer een pad in om te controleren of het bestaat", type=str) args = parser.parse_args() input_path = args.pad if input_path == Geen: exit() elif os.pad.isdir(input_path): print("Het pad bestaat en het is een directory") elif os.pad.isfile(input_path): print("Het pad bestaat en het is een bestand") else: print("Het pad bestaat niet")

Uitgang:

specificeren van het gegevenstype van argumenten

Conclusie

Dit is slechts de basis van het ontleden van argumenten met behulp van de Argparse-bibliotheek. Na het doornemen van deze tutorial, is het aan te raden om de officiële documentatie te lezen om meer trucs voor het gebruik van deze bibliotheek te ontdekken. Misschien wil je ook het bericht zien over het gebruik van inloggen in python, wat erg handig is voor het schrijven van grote applicaties en eenvoudig debuggen.

Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...
Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...