Command-line opties en argumenten verwerking met argparse in Python
Command-line interfaces (CLI’s) behoren tot de snelste en meest doeltreffende manieren om met software te communiceren. Ze stellen je in staat om opdrachten direct uit te voeren, wat leidt tot snellere uitvoering en uitgebreidere functionaliteit. Ontwikkelaars bouwen vaak CLI’s in Python voor diverse applicaties, tools en automatiseringsscripts, zodat gebruikersinvoer dynamisch kan worden verwerkt. Daarbij komt het Python-module argparse goed van pas.
Het argparse-module vereenvoudigt het verwerken van command-line-invoer en stelt ontwikkelaars in staat interactieve en gebruiksvriendelijke tools te bouwen. Als onderdeel van de standaardbibliotheek kunnen programmeurs hiermee invoer definiëren, verwerken en valideren zonder ingewikkelde logica.
In dit artikel bespreken we de belangrijkste concepten, nuttige voorbeelden en geavanceerde functies van het argparse-module, zodat je meteen kunt beginnen met het bouwen van betrouwbare command-line tools.
Hoe argparse in Python te gebruiken voor CLI’s Link kopiëren
Stap 1: Module importeren Link kopiëren
Importeer het module in je Python-script:
import argparse
Dit maakt het mogelijk om argumenten vanuit de command line te verwerken.
Stap 2: Een ArgumentParser-object aanmaken Link kopiëren
De klasse ArgumentParser is de basis van de argparse-API. Maak een instantie aan:
parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.")
Hier:
-
description beschrijft wat het programma doet en wordt weergegeven wanneer iemand --help uitvoert.
Stap 3: Inputs en opties toevoegen Link kopiëren
Definieer de parameters die je programma accepteert via add_argument():
parser.add_argument('filename', type=str, help="Name of the file to process")
parser.add_argument('--verbose', action='store_true', help="Enable verbose mode")
Toelichting:
-
filename is verplicht.
-
--verbose is optioneel en schakelt de verbose-modus in.
Stap 4: Gebruikersinvoer verwerken Link kopiëren
Start de verwerkingsfase met:
args = parser.parse_args()
De waarden worden opgeslagen als attributen van het args-object.
Stap 5: Verwerkte data gebruiken Link kopiëren
Voorbeeld:
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
Voorbeelden van CLI-gebruik Link kopiëren
Zonder verbose-modus Link kopiëren
python3 file.py example.txt
Met verbose-modus Link kopiëren
python3 file.py example.txt --verbose
Help weergeven Link kopiëren
python3 file.py --help
Veelgebruikte argparse-voorbeelden Link kopiëren
Voorbeeld 1: Standaardwaarden toevoegen Link kopiëren
Optionele parameters kunnen een standaardwaarde krijgen. In dit voorbeeld wordt een standaard-timeout van 30 seconden ingesteld:
import argparse
parser = argparse.ArgumentParser(description="Demonstrating default argument values.")
parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)")
args = parser.parse_args()
print(f"Timeout value: {args.timeout} seconds")
Uitleg
-
argparse importeren
-
Parser initialiseren
-
--timeout toevoegen met type=int en default=30
-
Waarden parsen met parse_args()
Case 1: standaardwaarde
python file.py
Case 2: aangepaste waarde
python file.py --timeout 60
Voorbeeld 2: Gebruik van choices Link kopiëren
Met choices kun je een argument beperken tot een vooraf vastgestelde set geldige waarden:
parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation")
Case 1: geldig
python3 file.py --mode basic
Case 2: geen invoer
python3 file.py
Case 3: ongeldig
python3 file.py --mode intermediate
Voorbeeld 3: Meerdere waarden verwerken Link kopiëren
Gebruik nargs='+' om meerdere waarden te accepteren:
parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process")
Case 1: meerdere waarden
python3 file.py --numbers 10 20 30
Case 2: één waarde
python3 file.py --numbers 5
Case 3: geen invoer
python3 file.py
Case 4: ongeldig
python3 file.py --numbers 10 abc 20
Voorbeeld 4: Vereiste optionele argumenten Link kopiëren
Optionele argumenten (met --) zijn standaard niet verplicht. Met required=True kun je dat wijzigen:
parser.add_argument('--config', required=True, help="Path to the configuration file")
Case 1: geldig
python3 file.py --config settings.json
Case 2: ontbreekt
python3 file.py
Geavanceerde functies van argparse Link kopiëren
Boolean flags Link kopiëren
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
Argumentgroepen Link kopiëren
group = parser.add_argument_group('File Operations')
group.add_argument('--input', type=str, help="Input file")
group.add_argument('--output', type=str, help="Output file")
Mutually exclusive options Link kopiëren
group = parser.add_mutually_exclusive_group()
group.add_argument('--json', action='store_true', help="Output in JSON format")
group.add_argument('--xml', action='store_true', help="Output in XML format")
Conclusie Link kopiëren
Het argparse-module maakt het eenvoudig om betrouwbare CLI’s te bouwen voor het verwerken van command-line argumenten in Python. Van eenvoudige parameters tot geavanceerde opties zoals choices en nargs, ontwikkelaars kunnen robuuste en gebruiksvriendelijke tools schrijven. Het gebruik van duidelijke argumentnamen en goede help-teksten verbetert daarbij de leesbaarheid en onderhoudbaarheid van je scripts.