0Pricing
Python Academy · Lektion

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_subparsers und add_parser erstellen Werkzeuge mit mehreren Befehlen.
  • set_defaults(func=...) leitet an Handler weiter.
  • Parent-Parser teilen gemeinsame Optionen.
  • Die Aktionen append und count verarbeiten 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

  1. argparse-Grundlagen
  2. Unterbefehle und Optionen
  3. Die Click-Bibliothek
  4. Ausdrucksstarke Terminalausgaben
← Zurück zu Python Academy