Befehlszeilen-Apps in Python mit Click erstellen
Bild vom Autor | DALLE-3 & Canva

Manchmal kann das, was sehr komplex erscheint, oft sehr einfach gemacht werden, und genau das ist es, was die Bibliothek bietet.Klicken‚ erreicht. Es macht das Erstellen von Befehlszeilenanwendungen in Python einfach und unkompliziert. Mit Click on können Sie beispielsweise einen Datei-Organizer erstellen, der Dateien basierend auf ihrem Typ in Ordnern sortiert. Entwickler nutzen Click on, um ihre alltäglichen Aufgaben zu automatisieren, ohne in der Komplexität von Syntax und Verfahren stecken zu bleiben. Darüber hinaus ermöglicht diese Bibliothek auch die Integration mit anderen Python-Bibliotheken, sodass Sie Ihre Anwendungen noch weiter verbessern können. Letztendlich kann ich sagen, dass Click on das Leben des Entwicklers viel einfacher macht.

Warum klicken?

Click on ist eine gute Wahl für die Erstellung von Befehlszeilen-Apps in Python, da es viele nützliche Funktionen bietet, die anderen Dienstprogrammen möglicherweise fehlen.

  • Einfach zu kombinierende Befehle: Click on ermöglicht die verzögerte Zusammenstellung von Befehlen ohne Einschränkungen.
  • Folgt Standardkonventionen: Unterstützt Unix/POSIX-Befehlszeilenkonventionen.
  • Unterstützung von Umgebungsvariablen: Kann Werte direkt aus Umgebungsvariablen laden.
  • Nützliche Helfer: Bietet allgemeine Hilfsfunktionen wie das Abrufen direkter Tastatureingaben, das Löschen des Bildschirms, das Abrufen von Terminalabmessungen und das Suchen von Konfigurationspfaden.
  • Benutzerdefinierte Wertabfrage: Fordert Benutzer bei Bedarf problemlos zur Eingabe auf.
  • Dateiverwaltung: Integrierte Unterstützung für den Umgang mit Dateien.
  • Erweiterbarkeit: Sie können ganz einfach benutzerdefinierte Befehle erstellen und Click on in größere Anwendungen integrieren und so die Anpassungsfähigkeit verbessern.

Erste Schritte

Zuerst müssen Sie die Bibliothek mit dem folgenden Befehl installieren:

Click on bietet viele erweiterte Funktionen. Konzentrieren wir uns jedoch auf die grundlegenden Konzepte, um Ihnen ein solides Verständnis der Bibliothek zu vermitteln und Sie bei der effektiven Erstellung von CLI-Apps zu unterstützen.

1. Befehle

@click on.command() ist ein Dekorator in Click on, der eine Funktion in einen CLI-Befehl definiert und ihn so über die Befehlszeile ausführbar macht. Lassen Sie uns das verstehen, indem wir eine einfache App erstellen, die eine Abschiedsnachricht druckt:

import click on

@click on.command()
def farewell():
    """ Easy program that prints a farewell message. """
    click on.echo('Goodbye! Take care.')

if __name__ == '__main__':
    farewell()

click on.echo() ist eine Dienstprogrammfunktion, die die Ausgabe auf dem Terminal ausgibt.

Sie können die App von Ihrem Terminal aus wie folgt ausführen:

Ausgabe:

2. Optionen

@click on.choice() wird verwendet, um Befehlen in Click on Befehlszeilenoptionen hinzuzufügen. Bei diesen Optionen handelt es sich um optionale Parameter oder Flags, die Sie an einen Befehl übergeben können, um dessen Verhalten zu ändern. Sie beginnen normalerweise mit einem doppelten Bindestrich (–). Sie können Datentypen für diese Optionen erzwingen (z. B. int, float, str), Standardwerte festlegen, Benutzer zur Eingabe auffordern, wenn die Possibility nicht bereitgestellt wird, und Hilfetext einschließen, der angezeigt wird, wenn Benutzer das Flag –help aufrufen . Dadurch werden Befehle flexibler und benutzerfreundlicher.

Da Sie nun diese Grundlagen kennen, wird es Ihnen leichter fallen, dem Beispiel zu folgen, das die Fläche des Rechtecks ​​berechnet:

import click on

@click on.command()
@click on.choice('--length', kind=float, default=3, immediate="Size of the rectangle")
@click on.choice('--width', kind=float, default=2, immediate="Width of the rectangle")
def space(size, width):
    """ Calculate the realm of a rectangle. """
    if size <= 0 or width <= 0:
        click on.echo("Size and width should be optimistic values.")
    else:
        space = size * width
        click on.echo(f'The world of the rectangle with size {size} and width {width} is {space}')

if __name__ == '__main__':
    space()

In diesem Beispiel,

  • @click on.command() Definiert den Befehlsbereich, der die Fläche des Rechtecks ​​berechnet.
  • @click on.choice() Nimmt Länge und Breite als Eingabe vom Benutzer und stellt sicher, dass es sich um den Typ Float handelt. Beachten Sie, dass der Typ standardmäßig ein String ist und Sie etwas anderes angeben müssen. Die Standardwerte 3 für die Länge und 2 für die Breite werden verwendet, wenn der Benutzer diese Werte nicht über Befehlszeilen-Flags bereitstellt und sie auch während der Eingabeaufforderung überspringt, z. B. indem er die Eingabetaste drückt, ohne die Werte anzugeben.
  • Zur Berechnung der Fläche wird die Formel Länge * Breite verwendet.
  • Das Programm prüft, ob der Längen- oder Breitenwert negativ ist und zeigt bei Bedarf eine Fehlermeldung an.

Führen Sie die App aus

  • Sie können diese App wie folgt von Ihrem Terminal aus ausführen:
  • python3 rectangle_area.py

    Sie werden aufgefordert, den Längenwert einzugeben. In meinem Fall habe ich den Wert mit 4 angegeben.

    Size of the rectangle:4

    Geben Sie den Wert ein und drücken Sie Enter.

    Nun werden Sie aufgefordert, den Breitenwert einzugeben. Ich habe den Breitenwert mit 11 angegeben.

    Width of the rectangle:11

    Drücken Enter danach.

  • Oder Sie können die Werte für Länge und Breite direkt angeben und wie folgt ausführen:
  • python3 rectangle_area.py --length 4 --width 11

Ausgabe

The world of the rectangle with size 4.0 and width 11.0 is 44.0

3. Mehrwertige Optionen

Mit mehrwertigen Optionen in Click on können Sie mehrere Werte an eine einzelne Possibility übergeben. Legen Sie zu diesem Zweck den Parameter multiples= True fest, der standardmäßig False ist. Lassen Sie uns dieses Konzept verstehen, indem wir die Fläche eines Rechtecks ​​​​mit mehreren Werten berechnen:

import click on

@click on.command()
@click on.choice('--length', a number of=True, kind=float)
@click on.choice('--width', a number of=True, kind=float)
def space(size, width):
    """ Calculate the realm of a number of rectangles. """
    if len(size) != len(width):
        click on.echo("The variety of lengths should match the variety of widths.")
        return

    for l, w in zip(size, width):
        if l <= 0 or w <= 0:
            click on.echo(f"Size {l} and width {w} should be optimistic values.")
        else:
            space = l * w
            click on.echo(f'The world of the rectangle with size {l} and width {w} is {space}')

if __name__ == '__main__':
    space()

Sie können diese App wie folgt von Ihrem Terminal aus ausführen:

python3 rectangle_area.py --length 2 –-length 3 --width 3 --width 6

Ausgabe

The world of the rectangle with size 2.0 and width 3.0 is 6.0
The world of the rectangle with size 3.0 and width 6.0 is eighteen.0

4. Argumente

In Click on sind Argumente Positionsparameter, die Sie in der durch den Befehl angegebenen Reihenfolge angeben müssen. Im Gegensatz zu Optionen, die mithilfe von Flags (wie –name) angegeben werden, sind Argumente erforderlich und verwenden keine doppelten Bindestriche (–). Darüber hinaus können Sie keine Standardwerte für Argumente festlegen oder den Benutzer dazu auffordern; Sie müssen direkt bereitgestellt werden, wenn der Befehl ausgeführt wird.

import click on

@click on.command()
@click on.argument('size', kind=float)
@click on.argument('width', kind=float)
def space(size, width):
    """ Calculate the realm of a rectangle. """
    if size <= 0 or width <= 0:
        click on.echo("Size and width should be optimistic values.")
    else:
        space = size * width
        click on.echo(f'The world of the rectangle with size {size} and width {width} is {space}')

if __name__ == '__main__':
    space()

Um diese App auszuführen, geben Sie die Längen- und Breitenargumente direkt in der Befehlszeile an:

python3 rectangle_area.py 5 10

Ausgabe

The world of the rectangle with size 5.0 and width 10.0 is 50.0

5. Gruppieren von Befehlen

In Click on können Sie verwandte Befehle gruppieren @click on.group(). Dadurch wird eine CLI-App mit mehreren Unterbefehlen erstellt, wodurch es einfacher wird, verschiedene Funktionen unter einer Befehlsgruppe zu verwalten und zu organisieren. Lassen Sie uns dies anhand eines Beispiels untersuchen:

import click on

@click on.group()
def rectangle():
    """ Instructions for rectangle calculations. """
    go

@click on.command()
@click on.choice('--length', immediate="Size of the rectangle", kind=float)
@click on.choice('--width', immediate="Width of the rectangle", kind=float)
def space(size, width):
    """ Calculate the realm of a rectangle. """
    if size <= 0 or width <= 0:
        click on.echo("Size and width should be optimistic values.")
    else:
        space = size * width
        click on.echo(f'The world of the rectangle with size {size} and width {width} is {space}')

@click on.command()
@click on.choice('--length', immediate="Size of the rectangle", kind=float)
@click on.choice('--width', immediate="Width of the rectangle", kind=float)
def perimeter(size, width):
    """ Calculate the perimeter of a rectangle. """
    if size <= 0 or width <= 0:
        click on.echo("Size and width should be optimistic values.")
    else:
        perimeter = 2 * (size + width)
        click on.echo(f'The perimeter of the rectangle with size {size} and width {width} is {perimeter}')

# Register the instructions with the group
rectangle.add_command(space)
rectangle.add_command(perimeter)

if __name__ == '__main__':
    rectangle()

In diesem Beispiel,

  • @click on.group() erstellt eine Befehlsgruppe mit dem Namen „Rechteck“, um verwandte Unterbefehle zu organisieren.
  • @click on.command() definiert einzelne Unterbefehle wie Fläche und Umfang.
  • @click on.choice('--length') Und @click on.choice(‘--width’) fordert den Benutzer zur Eingabe der Längen- und Breitenwerte auf und erzwingt Typ und Eingabe.
  • rectangle.add_command(space) Und rectangle.add_command(perimeter) Hängen Sie diese Unterbefehle an die Rechteckgruppe an.

Wenn Sie die CLI ausführen, verwenden Sie den Befehl „circle“, gefolgt von einem Unterbefehl (space oder perimeter).

Um die Fläche zu berechnen, führen Sie den folgenden Befehl aus:

python3 rectangle_calc.py space --length 2 --width 9

Ausgabe

The world of the rectangle with size 2.0 and width 9.0 is eighteen.0

So berechnen Sie den Umfang:

python3 rectangle_calc.py perimeter --length 2 --width 9

Ausgabe

The perimeter of the rectangle with size 2.0 and width 9.0 is 22.0

Dokumentieren von Befehlen, Optionen und Argumenten

Die Dokumentation von Argumenten, Befehlen und Optionen ist unerlässlich, da sie sicherstellt, dass Benutzer effektiv mit der App interagieren und ihre Funktionen schnell verstehen können.

Der Hilfeparameter in der @click on.choice() decorator beschreibt die Befehlszeilenoption. Andererseits werden Befehle und Argumente mit Hilfe des Docs-Strings dokumentiert. Lassen Sie es uns anhand eines Beispiels verstehen:

import click on
@click on.command()
@click on.choice('--radius', kind=float, default=5.0, assist='Radius of the circle.')
@click on.argument('shade')
def describe_circle(radius, shade):
    """
    Describes a circle with a given radius and shade.

    Arguments:
    shade: The colour of the circle.

    """
    click on.echo(f'The circle has a radius of {radius} and is coloured {shade}.')

if __name__ == '__main__':
    describe_circle()

Öffnen Sie nun Ihr Terminal und rufen Sie das Hilfe-Flag wie folgt auf:

Die Ausgabe wird sein:

Utilization: circle.py (OPTIONS) COLOR

Describes a circle with a given radius and shade.

Arguments:
  shade TEXT  The colour of the circle.

Choices:
  --radius FLOAT  The radius of the circle. Defaults to five.0.
  --help           Present this assist message and exit.

Dies verdeutlicht die Beschreibung des Befehls, die erforderlichen Argumente und die verfügbaren Optionen. Stellen Sie daher sicher, dass Ihre CLI-App eine ausführliche Dokumentation sowie eine gute Funktionalität enthält.

Zusammenfassung

In diesem Leitfaden haben wir die wesentlichen Konzepte untersucht, die zum Erstellen von Befehlszeilenanwendungen mit Click on erforderlich sind. Ich hoffe, dass diese Erläuterungen Ihnen die Grundlagen verdeutlicht haben. Für fortgeschrittenere Konzepte und eine detaillierte Verwendung empfehle ich einen Blick auf die Klicken Sie auf Dokumentation.

Kanwal Mehreen Kanwal ist Ingenieur für maschinelles Lernen und technischer Redakteur mit einer großen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Technology Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Range in Tech Scholar, Mitacs Globalink Analysis Scholar und Harvard WeCode Scholar anerkannt. Kanwal ist ein leidenschaftlicher Verfechter von Veränderungen und hat FEMCodes gegründet, um Frauen in MINT-Bereichen zu stärken.

Unsere Prime 3 Partnerempfehlungen

1. Bestes VPN für Ingenieure – 3 Monate kostenlos – Bleiben Sie on-line sicher mit einer kostenlosen Testversion

2. Bestes Projektmanagement-Device für Tech-Groups – Steigern Sie noch heute die Effizienz Ihres Groups

4. Bestes Passwortverwaltungstool für Tech-Groups – Zero-Belief- und Zero-Data-Sicherheit

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert