Een van de kwaliteiten van Python is dat het bij de batterijen is inbegrepen: het heeft een rijke en aanpasbare standaardbibliotheek die het uitstekend geschikt maakt naast andere programmeerdialecten voor het samenstellen van inhoud voor de directe lijn. In ieder geval, in het geval dat u inhoud voor de orderlijn componeert, moet u op dat moment ook een behoorlijke richtingslijn-interface geven, die u met de Python argparse bibliotheek kunt maken.

Wat is een richtingslijninterface?

De orderregelinterface (ook wel CLI genoemd) is een manier om samen te werken met een directe lijninhoud. Python begeleidt enkele verschillende bibliotheken die u toelaten om een orderregelinterface voor uw inhoud samen te stellen, maar de standaard route voor het maken van een CLI in Python is nu de Python argparse bibliotheek.

De Python argparse bibliotheek werd met Python 3.2 op 20 februari 2011 als een belangrijk aspect van de standaardbibliotheek ontladen. Het werd gepresenteerd met Python Upgrade Proposition 389 en is momenteel de standaardmethode om een CLI in Python te maken, zowel in 2.7 als in 3.2+ vorm.

Deze nieuwe module werd als een handel voor de meer gevestigde getopt en optparse modules gelost, omdat ze niet voldeden voor enkele belangrijke hoogtepunten.

De Python argparse bibliotheek:

$ ls

dcdb_20180201.sg4 mastro35.sg4 openingen.sg4

dcdb_20180201.si4 mastro35.si4 openingen.si4

dcdb_20180201.sn4 mastro35.sn4 openingen.sn4

Maakt het gebruik van positionele stellingen mogelijk

Maakt het mogelijk het voorvoegsel brandwonden aan te passen

Ondersteunt variabele hoeveelheden parameters voor een solitaire keuze

Ondersteunt subcommando’s (Een fundamentele orde lijnparser kan gebruik maken van andere richtingslijnparsers op basis van bepaalde stellingen).

Voordat u begint, moet u zich realiseren hoe een orderregel-interface werkt, dus open een terminal op uw PC en voer de order ls uit om het overzicht van de records in de huidige index op deze manier te krijgen:

Zoals duidelijk moet zijn, zijn er veel documenten in de huidige catalogus, maar de richting heeft niet veel gegevens over deze records hersteld.

Gelukkig hoeft u niet naar een ander programma te zoeken om een extravagante opsomming van de documenten in de stroomcatalogus te krijgen. U hoeft ook niet zelf de volgorde van de ls te wijzigen, aangezien deze een richtingslijn-interface krijgt, dat is slechts een heleboel tokens (zogenaamde stellingen) die u kunt gebruiken om het gedrag van deze richting te ontwerpen.

Probeer nu nog eens de volgorde ls uit te voeren, maar dan met het toevoegen van de – l keuze aan de richtingslijn zoals in het model hieronder:

$ ls -l

totaal 641824

-rw—— 1 davestaf 204558286 5 mrt 2018 dcdb_20180201.sg4

-rw—— 1 davestaf 110588409 5 mrt 2018 dcdb_20180201.si4

-rw—— 1 davestaf 2937516 5 mrt 2018 dcdb_20180201.sn4

-rw—— 1 davestaf 550127 27 mrt 2018 mastro35.sg4

-rw—— 1 davestaf 15974 11 Gen 17:01 mastro35.si4

-rw—— 1 davestaf 3636 27 mrt 2018 mastro35.sn4

-rw—— 1 davestaf 29128 17 Apr 2018 openingen.sg4

-rw—— 1 davestaf 276 17 Apr 2018 openingen.si4

-rw—— 1 davestaf 86 18 Apr 2018 openingen.sn4

De opbrengst is op dit punt totaal anders. De volgorde werd hersteld een ton van gegevens over de toestemmingen, de eigenaar, het verzamelen, en de grootte van elk document en de volledige bezetting van het register op de plaat.

Dit is op grond van het feit dat u gebruik gemaakt van de volgorde lijn interface van de ls richting en bepaald de – l keuze die machtigt de lange regeling, een buitengewone configuratie die aanzienlijk meer gegevens voor elk opgenomen document profiteert.

Om kennis te maken met dit thema, ga je een ton doornemen over stellingen, alternatieven en parameters, dus we moeten de verwoording onmiddellijk uitleggen:

De stelling is een solitair deel van een directe lijn, afgebakend door spaties.

Een alternatief is een specifiek soort stelling (of een deel van een stelling) die het gedrag van de orderlijn kan veranderen.

Een parameter is een specifiek soort twist die extra gegevens geeft aan een eenzame keuze of volgorde.

Denk aan de bijbehorende richting:

$ ls – l – s – k/var/log

In dit model heb je vijf unieke stellingen:

ls: de naam van de richting die u uitvoert

– l: een keuze om de aanzienlijke verloederde positie te versterken

– s: een keuze om de toegewezen grootte van elk record af te drukken

– k: een keuze om de grootte in kilobytes te hebben

/var/log: een parameter die extra gegevens geeft (de weg naar de helling) naar de richting

Merk op dat je op dat moment, als de kans groot is dat je verschillende alternatieven in een eenzame rij hebt, je ze in zo’n eenzame situatie kunt brengen:

$ ls – lsk/var/log

Hier heb je slechts drie stellingen:

ls: de naam van de opdracht die u uitvoert…

– lsk: de drie verschillende keuzes die je nodig hebt om je te bekrachtigen (een mix van – l, – s, en – k)

/var/log: een parameter die extra gegevens geeft (de manier om te hellen) aan de volgorde

Wanneer een richtlijn-interface te gebruiken

Aangezien u begrijpt wat een richtlijn-interface is, kunt u zich afvragen wanneer het een slimme gedachte is om er een uit te voeren in uw projecten. De algemene richtlijn is dat, in het geval dat u een makkelijk te gebruiken manier moet geven om uw programma te ontwerpen, u op dat moment een richtingslijn-interface moet overwegen, en de standaard methode om dit te doen is door gebruik te maken van de Python argparse bibliotheek.

Ongeacht of u een ingewikkeld orderregelprogramma maakt dat een regelrecord nodig heeft om te werken, in het geval dat u uw klant de kans moet geven om aan te geven welk ontwerpdocument moet worden gebruikt, is het een slimme gedachte om deze stimulans te erkennen door een directe lijninterface met de Python argparse bibliotheek te maken.

De meest effectieve methode om de Python argparse Library te gebruiken voor het maken van een richtingslijn-interface

Het gebruik van de Python argparse bibliotheek heeft vier stadia:

Importeren van de Python argparse bibliotheek

Maak de parser

Toevoegen van discretionaire en positionele stellingen aan de parser

.parse_args() uitvoeren

Nadat je .parse_args() hebt uitgevoerd, krijg je een Naamruimte-object dat een eenvoudige eigenschap bevat voor elke informatietwist die je uit de richtingslijn krijgt.

Om deze vier stappen in detail te bekijken met een model, stellen we ons voor dat je een programma maakt met de naam myls.py dat de records in de huidige catalogus opsomt. Hier is een mogelijk gebruik van uw orderregelinterface zonder gebruik te maken van de Python argparse bibliotheek:

# myls.py

importeer os

invoersystemen

indien len(sys.argv) > 2:

print(‘Je hebt te veel argumenten opgegeven’)

sys.exit()

indien len(sys.argv) < 2:

print(‘Je moet het pad specificeren dat moet worden vermeld’)

sys.exit()

input_path = sys.argv[1]

indien niet os.path.isdir(input_path):

print(‘Het opgegeven pad bestaat niet’)

sys.exit()

print(‘n’.join(os.listdir(input_path)))

Dit is een mogelijke implementatie van de commandoregelinterface voor uw programma die geen gebruik maakt van de Python argparse bibliotheek, maar als u het probeert uit te voeren, dan zult u zien dat het werkt:

$ python myls.py

U moet het pad specificeren dat moet worden vermeld

$ python myls.py /mnt /proc /dev

U hebt te veel argumenten opgegeven

$ python myls.py /mnt

dir1

dir2

Zoals u kunt zien, werkt het script wel, maar de uitvoer is heel anders dan de uitvoer die u zou verwachten van een standaard ingebouwd commando.

Laten we nu eens kijken hoe de Python argparse bibliotheek deze code kan verbeteren:

# myls.py

# Importeer de argparse bibliotheek

importargument

importbewegingen

invoersystemen

# Creëer de parser

my_parser = argparse.ArgumentParser(description=’Lijst van de inhoud van een map’)

# Voeg de argumenten toe

my_parser.add_argument (‘Pad’),

metavar=’pad’,

type=str,

help=’het pad naar de lijst’)

# Executeer de parse_args() methode

args = my_parser.parse_args()

input_path = args.Path

indien niet os.path.isdir(input_path):

print(‘Het opgegeven pad bestaat niet’)

sys.exit()

print(‘n’.join(os.listdir(input_path)))

De code is sterk veranderd met de introductie van de Python argparse bibliotheek.