Unterbefehle und Optionen
Komplexe CLIs erstellen
Unterbefehle und Optionen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Unterbefehle?
Werkzeuge wie git haben Unterbefehle: git add, git commit. argparse unterstützt dies über Subparser, bei denen jeder Unterbefehl eigene Argumente besitzt.
import argparse
parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')Subparser hinzufügen
add_subparsers gibt ein Objekt zurück, dessen Methode add_parser die einzelnen Unterbefehle erstellt. dest speichert, welcher Unterbefehl ausgewählt wurde.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)Argumente für einzelne Unterbefehle
Jeder Subparser kann eigene Argumente definieren. Der Unterbefehl add erwartet hier einen Namen, während list keine Argumente benötigt.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)Den Befehl auswerten
Verzweigen Sie nach dem Parsen anhand von args.command, um die passende Logik auszuführen.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')
args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
print('adding', args.item)
elif args.command == 'clear':
print('clearing all')Handler mit set_defaults
Ein übersichtliches Muster besteht darin, jedem Subparser mit set_defaults(func=...) eine Funktion zuzuweisen und anschließend args.func(args) aufzurufen.
import argparse
def do_hi(args):
print('hi', args.who)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)
args = parser.parse_args(['hi', 'Ana'])
args.func(args)Gemeinsame Optionen über Parent-Parser
Ein Parent-Parser enthält Optionen, die mehreren Unterbefehlen gemeinsam sind, und vermeidet Wiederholungen. Übergeben Sie parents=[base] und add_help=False.
import argparse
base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)Standardwerte pro Option
Optionen von Unterbefehlen können wie Argumente der obersten Ebene eigene Standardwerte und Typen besitzen.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)Wiederholte Optionen anhängen
action='append' ermöglicht die mehrfache Angabe eines Flags und sammelt jeden Wert in einer Liste.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)Flags zählen
action='count' zählt, wie oft ein Flag erscheint – das klassische Muster -vvv für die Ausführlichkeit.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)Ein Tool mit zwei Befehlen
Durch die Kombination von Unterbefehlen, Handlern und gemeinsamen Optionen entsteht ein strukturiertes CLI mit mehreren Befehlen.
import argparse
def add(args):
print('add', args.item, 'qty', args.qty)
def remove(args):
print('remove', args.item)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)
args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)Erforderlicher Unterbefehl
Setzen Sie bei den Subparsern required=True, damit die Benutzerin oder der Benutzer einen Befehl auswählen muss. Andernfalls gibt argparse eine Fehlermeldung aus.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)Kurzer Test
Testen Sie Ihr Verständnis von Unterbefehlen und Optionen.
Zusammenfassung
Sie haben Unterbefehle und Optionen kennengelernt:
add_subparsersundadd_parsererstellen Werkzeuge mit mehreren Befehlen.set_defaults(func=...)leitet an Handler weiter.- Parent-Parser teilen gemeinsame Optionen.
- Die Aktionen
appendundcountverarbeiten wiederholte Flags.
Als Nächstes: die Bibliothek Click für CLIs auf Basis von Decorators.
Häufig gestellte Fragen
Ist die Lektion „Unterbefehle und Optionen“ kostenlos?
Ja — der vollständige Text von „Unterbefehle und Optionen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Unterbefehle und Optionen“?
Komplexe CLIs erstellen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Unterbefehle und Optionen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- argparse-Grundlagen
- Unterbefehle und Optionen
- Die Click-Bibliothek
- Ausdrucksstarke Terminalausgaben