Eine Befehlszeilenschnittstelle ist ein leistungsstarkes Werkzeug für Entwickler und Administratoren. Sie hilft bei der Automatisierung von Routinetätigkeiten und bietet einen einfachen Zugang zur vollen Leistungsfähigkeit einer Programmiersprache. Es gibt viele verschiedene Befehlszeilenschnittstellen, aber heute werden wir uns ansehen, wie man eine CLI mit Python und einer Bibliothek namens click erstellt.

Was ist CLI?

Die Befehlszeilenschnittstelle (CLI) ist eine Art der Interaktion mit einem Computerprogramm, bei der der Benutzer einen Befehl in ein Textterminal eingibt. Ein Programm, das die Eingabe von Befehlen durch den Benutzer erfordert, wird oft als Befehlszeilenschnittstelle, Befehlssprache oder Terminalschnittstelle bezeichnet. So kann beispielsweise der Python-Interpreter mit dem Befehl python aufgerufen werden. Auch Betriebssysteme können über eine Befehlszeilenschnittstelle verfügen, über die bestimmte Funktionen gesteuert werden können, z. B. die Sicherung von Festplatten mit dem Befehl dd in Unix-ähnlichen Betriebssystemen. In Python kann ein Programm über die Befehlszeile aufgerufen werden, indem ein Python-Skript erstellt wird, das als CLI (command-line interface) bezeichnet wird.

Voraussetzungen:

Erstellen Sie eine virtuelle Umgebung:

Um die virtuelle Umgebung zu erstellen, verwenden Sie den folgenden Befehl in Ihrem Terminal oder in der Eingabeaufforderung

mkdir cli
cd cli

Erstellen einer virtuellen Umgebung

python3 -m venv cli

Aktivieren Sie die Umgebung in Windows

cli\Scripts\activate.bat

Aktivieren Sie die Umgebung in Linux

source cli/bin/activate

Click:

Click ist ein Python-Paket, mit dem Anwendungen über einzigartige, maßgeschneiderte Schnittstellen verfügen, die auf organisierte, komponierbare Weise aufgebaut sind. Es ermöglicht Entwicklern, die Schnittstelle mit minimalem Aufwand zu konfigurieren und zu erweitern, und bietet sinnvolle Standardeinstellungen, die eine schnelle Konfiguration ermöglichen.

Es zielt darauf ab, den Prozess des Schreibens von Kommandozeilen-Tools schnell und unterhaltsam zu machen, sowie flexibel, so dass Sie jegliche Frustration vermeiden können, die dadurch entsteht, dass Sie nicht in der Lage sind, eine beabsichtigte CLI API zu implementieren.

Sie können click installieren, indem Sie den folgenden Befehl in Ihrem Terminal eingeben.

pip install click

Beispiel -1:

Wenn jemand seinen Namen eintippt, während das Skript läuft, sagt es im Gegenzug „Hallo“ und dann den Namen des Benutzers. Sie werden es besser verstehen, wenn Sie sich die Ausgabe ansehen.

import click

@click.command()
@click.argument("name")
def main(name):
    print(f'Hello {name}')

if __name__ == "__main__":
    main()

Erklärung des Codes:

  1. Klick-Bibliothek importieren.
  2. Hängen Sie den Dekorator an die Hauptfunktion an. Und entwickeln Sie unser Beispiel, indem Sie den Namen mit einem Klickdekorator click.command parametrisieren.
  3. Hinzufügen des zweiten Dekorators click.argument, um den Namen der Variablen anzugeben, die das Argument enthalten wird, das wir übergeben werden.

Ausgabe:

Wie Sie sehen können, funktioniert unser erster kleiner Kli perfekt. Jetzt werden wir einige weitere Funktionen zu diesem Kli hinzufügen.

import click

@click.command()
@click.argument("name")
@click.option('--number', type=int)
def main(name, number):
    for i in range(number):
        print(f'Hello {name}')

if __name__ == "__main__":
    main()

Dieses Beispiel ist mehr oder weniger ähnlich wie das vorherige, aber hier haben wir einen weiteren Dekorator hinzugefügt click.option gibt auch den Datentyp an und wir fügen ihn dann in die for-Schleife ein, damit er mehrfach in der Ausgabe zurückgegeben werden kann.

Ausgabe

Wie Sie sehen können, können wir jetzt eine Option in der Befehlszeile angeben und unsere Funktionalität erweitern.

Das Interessante am Klick ist, dass man damit eine progressive Hilfemassage einbauen kann. Wenn wir uns in die Lage des Endbenutzers versetzen, können wir uns fragen, ob er mit dem Skript vertraut ist oder viel über Kodierung weiß. Was sie tun können, zeige ich Ihnen.

Der Benutzer kann den Parameter –help verwenden, dann wird eine dynamische Ausgabe erzeugt. Klicken Sie auf „Out of the box“, um eine Hilfestellung zu geben, was Sie mit dem Skript tun können.

Wie Sie in der Ausgabe sehen können, gibt Ihnen der Klick einige zusätzliche Tipps für die Verwendung des Skripts und gibt Ihnen auch die Optionen. Denken Sie daran, dass diese Ausgabe dynamisch generiert wird. Wenn Ihr Skript also anders ist als dieses, wird auch die Ausgabe anders sein.

Sie können auch die Hilfemeldung in das Skript einfügen, damit der Endbenutzer den Cli besser verstehen kann.

import click

@click.command()
@click.argument('name')
@click.option('--number', type=int, help="please enter the number of time you want to show the message")
def main(name, number):
    '''
    write your help message here
    '''
    for i in range(number):
        print(f'Hello {name}')

if __name__ == "__main__":
    main()

Ausgabe

As you can see how the end-user will know exactly what they have to enter to use the cli.

Beispiel -2:

In diesem Beispiel werden wir eine CLI erstellen, damit der Benutzer nur bestimmte Werte eingeben kann.

import click

@click.command()
@click.option('--weather', type=click.Choice(['sunny', 'rainy', 'snowy']), help="Please select the weather type")
def main(weather):
    print(f'My fav weather is {weather}')

if __name__ == "__main__":
    main()

Der Code ist sehr einfach, was wir hier getan haben, ist einfach verwendet click.option Dekorator, die verfügbar ist angeklickt Bibliothek und der Rest ist das gleiche wie das vorherige Beispiel.

Ausgabe:

Beispiel 3: Erstellen einer CLI mit einer Gruppe von Befehlen

Dies ist ein Beispiel für ein Restaurant, in dem die Benutzer Mittag- oder Abendessen bestellen wollen und angeben, ob sie Pizza oder Burger bevorzugen. Sie können dies besser verstehen, wenn Sie sich die Ausgabe ansehen.

import click

# creating group
@click.group()
def cli():
    pass

# creating subgroup for lunch
@cli.group()
def lunch():
    pass

# creating subgroup for dinner
@cli.group()
def dinner():
    pass

@click.command()
def burger():
    print(f'Enjoy your meal!')

@click.command()
def pizza():
    print(f'Enjoy your meal!')

lunch.add_command(burger)
dinner.add_command(burger)
lunch.add_command(pizza)
dinner.add_command(pizza)


if __name__ == "__main__":
    cli()

Hier erstellen wir eine Gruppe von Befehlen, die der Endbenutzer verwenden kann, und klicken auf den Parameter group.

Ausgabe:

Wie Sie sehen können, hat der Benutzer nun die Möglichkeit, das Abendessen oder das Mittagessen auszuwählen und dann zu bestimmen, welches Gericht Sie bestellen möchten.

Hier ist ein Trick, um Ihre Befehlszeile interessanter zu gestalten. Wir werden hier eine Python-Bibliothek namens color verwenden, die Sie mit dem folgenden Befehl installieren können.

pip install color

Importieren Sie nun die Bibliothek in Ihren Code wie folgt 

from colorama import Fore, Back, Style

Dann definieren Sie die Farbe in der Druckanweisung wie folgt 

print(Fore.GREEN + f'Enjoy your meal!')

Und das war’s! Sie erzeugen nun die Konsolenausgabe in der von Ihnen definierten Farbe. Es ist einfach und schnell zu generieren, aber es verleiht Ihrer Eingabeaufforderung mehr Charakter und Persönlichkeit als einfacher alter langweiliger schwarzer und weißer Text.

Letzte Worte

In diesem Blogbeitrag haben wir gelernt, wie man mit Python und der Click-Bibliothek CLIs erstellt. CLIs können in verschiedenen Situationen nützlich sein, und wir haben hier einige verschiedene Situationen anhand von Beispielen erklärt. Wir haben auch die colors-Bibliothek verwendet, um der Ausgabe Farbe zu geben.