Python: Argumente parsen (CLI)

Bestimmt habt ihr schon mal Python Programme benutzt, denen man gleich beim starten noch bestimmte Werte mitgeben kann. Und genau so ein Skript wollen wir heute schreiben. Ich bin Chris und das ist Programmieren mit Chris. Viel Spaß.

Das Video hier ist in Zusammenarbeit mit dem lieben Felix von Hello Coding entstanden. Mehr dazu erzähle ich am Ende des Videos, wir steigen erstmal in den Inhalt ein.

Normalerweise starten wir Python Programme ja z.B. mit Befehlen wie diesem hier:

python3 hello.py

Unser Ziel ist es, dass wir ein Programm schreiben, dem wir Argumente mitgeben können.

python3 hello.py --name Chris

Damit Python das Argument lesen kann, müssen müssen wir die angegebenen Argumente analysieren. Oder anders ausgedrückt: Wir müssen sie parsen. Passenderweise nutzen wir dafür das Modul argparse.

Okay, legen wir im Quellcode los.

Ich hab jetzt schon mal eine leere Python Datei erstellt. Die trägt den Namen hello.py.

Wie immer importiere ich zuerst die benötigten Module.

import argparse

Als nächstes lege ich die Grundstruktur meines Skriptes an. Als erstes brauchen wir eine main Funktion. In dieser erstellen wir gleich einen Parser und legen unsere Argumente an.

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--name')
    
    args = parser.parse_args()
    print(args)

Die Main-Funktion soll jetzt immer aufgerufen werden, wenn das Programm gestartet wird. Das legen wir am Ende des Dokumentes fest.

if __name__ == "__main__":
    main()

Das Auslesen der Argumente funktioniert schon mal. Jetzt basteln wir eine neue Funktion, die die Argumente weiter verarbeitet. Wir sorgen jetzt dafür, dass der Name, den der Nutzer eintippt, in der ausgegebenen Begrüßung auftaucht. Ich füge deshalb meiner Main-Funktion erstmal eine neue Funktion mit dem Namen say_hello hinzu.

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--name')
    
    args = parser.parse_args()
    say_hello(args)

Über der Main-Funktion lege ich jetzt die say_hello-Funktion an.

def say_hello(args):
    if args.name:
        print(f'Hallo {args.name}!')

    else:
        print('Hallo unbekannter Freund!')

So sollte das Ganze jetzt schon funktionieren. Probieren wir’s aus!

Und jetzt hatte ich ja noch versprochen, einige Worte zu Felix zu sagen. Felix betreibt den Programmier-Blog Hello Coding, wo er inzwischen schon eine Menge Tutorials veröffentlicht hat. Felix hat sich auch mit dem Thema dieses Videos beschäftigt, sein Artikel geht aber fachlich noch ein bisschen weiter. Wenn ihr also noch tiefer in das Thema einsteigen wollt, dann findet ihr den passenden Artikel hier. Lasst uns gern auch hier auf YouTube oder in Felix Blog einen Kommentar da, ob das für euch hilfreich ist und ob ihr euch zukünftig noch mehr solcher gemeinsamen Inhalte wünscht.

Okay, soviel aber erstmal für heute. Wenn ihr den Kanal unterstützen wollt, dann findet ihr alle Infos dazu in der Videobeschreibung. Jetzt wünsch ich euch ganz viel Spaß beim Ausprobieren, bleibt neugierig und bis bald!

✅ Kompletter Quellcode

import argparse


def say_hello(args):
    if args.name:
        print(f'Hallo {args.name}!')

    else:
        print('Hallo unbekannter Freund!')


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--name')
    
    args = parser.parse_args()
    say_hello(args)


if __name__ == "__main__":
    main()