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.
Importeer het module in je Python-script:
import argparse
Dit maakt het mogelijk om argumenten vanuit de command line te verwerken.
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.
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.
Start de verwerkingsfase met:
args = parser.parse_args()
De waarden worden opgeslagen als attributen van het args-object.
Voorbeeld:
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
python3 file.py example.txt
python3 file.py example.txt --verbose
python3 file.py --help
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
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
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
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
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
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")
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")
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.