Implementieren einer Befehlszeilenschnittstelle im Stil "[Befehl] [Aktion] [Parameter]"?

Was ist der "sauberste" Weg, um eine Befehlszeilen-Benutzeroberfläche zu implementieren, ähnlich wie bei git, zum Beispiel:

git push origin/master
git remote add origin git://example.com master

Idealerweise auch das flexiblere Parsen zulassen, zum Beispiel

jump_to_folder app theappname v2
jump_to_folder app theappname source
jump_to_folder app theappname source v2
jump_to_folder app theappname build v1
jump_to_folder app theappname build 1
jump_to_folder app theappname v2 build

jump_to_folder ist der Skriptname,app ist der Befehl,theappname ist ein Parameter mit festem Speicherort, "build" und "v2" usw. sind Argumente (Mögliche Argumente sind beispielsweise eine beliebige Zahl / eine beliebige Zahl mit dem Präfix v oder build / source / tmp / config).

Ich könnte die Argumente einfach manuell mit einer Reihe von @ analysiereif/else/elifs, aber es muss einen eleganteren Weg geben, dies zu tun?

ls rein theoretisches Beispiel könnte ich das UI-Schema beschreiben.

app:
    fixed: application_name

    optional params:
        arg subsection:
            "build"
            "source"
            "tmp"
            "config"

        arg version:
            integer
            "v" + integer

Analysieren Sie dann die angegebenen Argumente anhand des obigen Schemas und erhalten Sie ein Wörterbuch:

>>> print schema.parse(["app", "theappname", "v1", "source"])
{
    "application_name": "theappname",
    "params":{
        "subsection": "source",
        "version":"v1"
    }
}

Gibt es ein solches System? Wenn nicht, wie würde ich etwas in diese Richtung implementieren?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage