Python

Zelfstudie over het parseren van de Python-opdrachtregel

Zelfstudie over het parseren van de Python-opdrachtregel
Parsing is een proces waarbij een reeks teksten wordt geanalyseerd om erachter te komen wat het programma met de gegeven opdrachten moet doen. De tekst wordt opgedeeld in kleine stukjes, ook wel tokens genoemd, om de gegevensstructuur te bouwen die bekend is bij de compiler of de interpreter. De uitvoering resulteert uiteindelijk in het beoogde resultaat. Python wordt vaak gebruikt als een taal om opdrachtregels gemakkelijk te ontleden. Deze handleiding gebruikt deze speciale module die bij Python wordt geleverd, en staat bekend als argparse. Het bijzondere van argparse is dat het vrij eenvoudig te gebruiken, gebruiksvriendelijk is, beschikbaar is met Python en helpt bij het gemakkelijk maken van opdrachtregelinterfaces.

De volgende gids laat zien hoe je argparse gebruikt in Ubuntu, met Python3, en zorg er dus voor dat beide direct beschikbaar zijn voordat je verder gaat. Als Python3 niet beschikbaar is, kan het worden geïnstalleerd met de volgende twee opdrachtregels:

sudo apt-get update
sudo apt-get install python3.6

Essentiële syntaxis

Het doel van deze handleiding is om de kernfuncties van argparse te schetsen en hoe u enkele van de opties ervan kunt gebruiken. Argparse vereist Python en een kladblok om de commando's te typen. Ubuntu heeft zijn eigen notitieblok dat bekend staat als "Teksteditor", dat toegankelijk is via Ubuntu dash. De commando's worden uitgevoerd via terminal.

  1. Start de teksteditor via Ubuntu Dash.
  2. Typ de volgende twee regels als de essentiële codes:. De eerste regel importeert de argparse-module naar het codefragment, terwijl de tweede regel een argument-parser-object maakt, dat alle informatie bevat die nodig is om opdrachten te ontleden naar Python-gegevenstypen. import argparse
    parser = argparse.ArgumentParser()
  3. Gebruik de volgende opdracht om argumentreeksen naar objecten te converteren:. Gewoonlijk wordt het object geïnstantieerd en aan een variabele toegewezen, maar dat is niet nodig. parser.parse_args()
  4. Het programma kan worden uitgevoerd in Linux-terminal via python3 met de volgende opdracht:. python3 pscript.py

De app-beschrijving weergeven

De app-beschrijvingsparameter is om aan te geven waar de applicatie voor is. Wanneer het help-commando wordt gebruikt met het python-script, verschijnt de app-beschrijving samen met de beschikbare vlaggen die in het programma moeten worden gebruikt.  De volgende regel moet worden gebruikt voor het vermelden van de app-beschrijving:.

parser = argparse.ArgumentParser(description='app description')

De beschrijving aan het einde weergeven (epiloog)

Als beschrijving kan de epiloog aan het einde worden weergegeven met de epiloogparameter. Net als de beschrijving moet deze ook worden opgegeven in de argumentParser-functie.

Argumenten gebruiken

Argumenten worden gedefinieerd met add_argument() functie. Het specificeert welke positionele argumenten/argumenten moeten worden gebruikt met het python-script. Standaard accepteert het programma -help vlag als het positionele argument, maar er kan meer worden toegevoegd met behulp van de bovengenoemde functie. Er zijn veel manieren om argumenten aan de toepassing toe te voegen.

Enkel positioneel argument

Het enkele positionele argument zorgt ervoor dat het programma slechts één argument accepteert. In het volgende voorbeeld staat bld als argument; vandaar dat alleen bld kan worden gebruikt als een positioneel argument bij het uitvoeren van het programma. Als het argument ontbreekt, zal het programma een foutmelding geven met een waarschuwingsbericht "te weinig argumenten". Het bijzondere van positioneel argument is dat het niet in de terminal hoeft te worden vermeld bij het geven van argumenten aan het programma.

parser.add_argument("bld")

Positioneel argument in een bepaald type

add_argument() niet alleen één argument, maar ook meerdere argumenten, zoals te zien is in het volgende voorbeeld following. Als er meerdere argumenten worden opgegeven, moeten deze als volgt worden opgemaakt:. Het eerste argument definieert de naam van het positionele argument, het tweede is het type, wat betekent dat het type van de waarde wordt geaccepteerd als het argument voor het programma, het laatste is voor de beschrijving die alleen verschijnt bij gebruik van de help-vlag.

In de volgende schermafbeelding laat het zien hoe het programma weigert om een ​​niet-integrale waarde te accepteren als het positionele argument. Alleen een geheel getal kan hier nu worden ingediend.

parser.add_argument('bld', type=int,
help = "een geheel getal is vereist")

Optioneel positioneel argument in een bepaald type

De volgende opdrachtregel is hetzelfde als de bovenstaande, behalve dat het het positionele argument optioneel maakt met de parameter nargs; vandaar dat de gebruiker het kan weglaten bij het uitvoeren van het programma. Als het argument echter is opgegeven, moet het van het juiste gegevenstype zijn, anders blijft het parseren zoals gewoonlijk.

parser.add_argument('bld', type=int, nargs='?',
help='Dit veld is voor optionele integerwaarde')

Optioneel argument in een bepaald type

Het verschil tussen argument en het positionele argument is positioneel argument hoeft niet te worden vermeld, terwijl het argument moet worden vermeld als een vlag samen met zijn waarde bij het uitvoeren van het programma. De volgende opdrachtregel bevat exact dezelfde teksten, behalve de leidende dubbele regels (koppeltekens). Ze geven aan dat het argument een argument/vlag is dat moet worden vermeld samen met een waarde in het gegeven type bij het uitvoeren van het programma. Het gebruik van argumenten verplicht maken vereist=True parameter kan worden gebruikt in de functie add_argument() als een van de andere argumenten. Zoals hierboven vermeld, zal het niet voldoen aan het formaat een fout opleveren.

Gebruik van korte argumenten

Korte argumenten werken op dezelfde manier als zijn langere tegenhangers. Het enige verschil is dat het helpt om ruimte te besparen bij het gebruik van een groot aantal opdrachtregels of wanneer de ontwikkelaar de opdrachten netjes en zo veel mogelijk georganiseerd wil houden. In het volgende voorbeeld laat het zien hoe het programma op dezelfde manier op beide argumenten reageert. Zorg er bij het gebruik van de korte argumenten voor dat u slechts één koppelteken gebruikt, aangezien dit de standaard is in de branche.

Voorwaardelijke argumenten

Voorwaardelijke argumenten zijn heel eenvoudig te gebruiken als argumenten in eerdere voorbeelden. Het enige verschil in dit segment is het specificeren van de actieparameter. Het accepteert twee waarden:, store_true, en store_false. Als de actieparameter is opgegeven als store_true, wordt het, wanneer het flag-argument in het programma wordt gebruikt, toegewezen door een echte Booleaanse waarde; daarom kan het worden gebruikt als een voorwaardelijk argument. De toepassingen van voorwaardelijke argumenten zijn om een ​​logische stroom van de uitvoering te maken op basis van de gebruikersinvoer. De gebruiker beslist dus welk pad ze willen nemen en hoe het programma verloopt. De geparseerde opdrachten bevinden zich in het naamruimte-object, daarom retourneert het het sleutelwoord namespace() nadat het programma is uitgevoerd.

parser.add_argument('--bld', action='store_true',
help='voorwaardelijk argument')

De naam van het programma opgeven

Boven alle voorbeelden wordt de naam van het programma niet gespecificeerd. In plaats daarvan vermeldt het alleen de naam van het scriptbestand samen met de lijst met geaccepteerde argumenten. Het voordeel van het gebruik van de programmanaam is dat het het programma gebruiksvriendelijker maakt en onafhankelijk is van de naam van het script. Dit is erg handig als er meerdere scriptbestanden bij de uitvoering betrokken zijn. Het zal de gebruiker dus niet verwarren met dubbelzinnige namen.

De volgende twee opdrachtregels moeten worden gebruikt om dit te laten gebeuren:. In de eerste regel specificeert het de naam van het programma met de prog-parameter, terwijl deze specifieke parameter kan worden gebruikt als een variabele waar de programmanaam wordt gebruikt, en wanneer het programma wordt uitgevoerd, wordt de prog-parameter vervangen door de waarde die wordt vermeld in argumentParser( ) functie samen met de prog-parameter, wat in dit voorbeeld "Nucuta App" betekent. Verder is het belangrijk om het commando as . te gebruiken %(prog)s anders zal de parsering niet succesvol zijn.

parser = argparse.ArgumentParser(prog='Nucuta-app')
parser.add_argument('--bld', help='Dit %(prog)s it')

Hoe de voorwaarden te controleren en de uitvoering te laten verlopen

De uitvoeringsstroom wordt gedefinieerd met IF ELSE-clausules. Deze clausules begeleiden de uitvoeringsstroom, afhankelijk van de voorwaarde en de aard ervan. In het volgende voorbeeld wordt de getypte integer-waarde toegewezen aan een variabele, bld, die zich in het arg-object bevindt. Vervolgens wordt het vergeleken met een vooraf gedefinieerde waarde om de staat ervan te controleren. In dit voorbeeld, als de ingevoerde waarde groter is dan 10, wordt de eerste instructie uitgevoerd, als de ingevoerde waarde gelijk is aan 10, wordt de tweede instructie uitgevoerd, als de ingevoerde waarde kleiner is dan 10, wordt de laatste instructie uitgevoerd. Evenzo kan de uitvoeringsstroom gemakkelijk worden geleid. Zoals het voorbeeld laat zien, zijn de argumenten toegankelijk via het object dat wordt geretourneerd door de functie parse_args() - args.

CONCLUSIE

Met deze handleiding ben je klaar om alle commandoregels in python te ontleden.  Succes

Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...