So erstellen Sie Ihre eigenen Befehlszeilenprogramme in Python mit einem Klick
Werbung
Click ist ein Python-Paket zum Schreiben von Befehlszeilenschnittstellen. Sie erhalten eine ansprechende Dokumentation und können Befehlszeilenschnittstellen in nur einer Codezeile erstellen. Kurz gesagt: Es ist fantastisch und kann dabei helfen, Ihre Programme auf die nächste Stufe zu heben.
So können Sie Ihre Python-Projekte aufpeppen.
Schreiben von Befehlszeilenprogrammen ohne Klicken
Es ist möglich, Befehlszeilenprogramme ohne Verwendung von Click zu schreiben, dies erfordert jedoch mehr Aufwand und viel mehr Code. Sie müssen Befehlszeilenargumente analysieren, eine Validierung durchführen, eine Logik für die Verarbeitung unterschiedlicher Argumente entwickeln und ein benutzerdefiniertes Hilfemenü erstellen. Möchten Sie eine neue Option hinzufügen? Dann ändern Sie Ihre Hilfefunktion.
Es ist nichts Falsches daran, eigenen Code zu schreiben, und dies ist eine großartige Möglichkeit, um Python zu lernen. Mit Click können Sie jedoch die Prinzipien von "Don't Repeat Yourself" (DRY) befolgen. Ohne Click schreiben Sie Code, der zerbrechlich ist und bei jeder Änderung einen hohen Wartungsaufwand erfordert.
Hier ist eine einfache Befehlszeilenschnittstelle, die ohne Klick codiert ist:
import sys import random def do_work(): """ Function to handle command line usage""" args = sys.argv args = args[1:] # First element of args is the file name if len(args) == 0: print('You have not passed any commands in!') else: for a in args: if a == '--help': print('Basic command line program') print('Options:') print(' --help -> show this basic help menu.') print(' --monty -> show a Monty Python quote.') print(' --veg -> show a random vegetable') elif a == '--monty': print('What\'s this, then? "Romanes eunt domus"? People called Romanes, they go, the house?') elif a == '--veg': print(random.choice(['Carrot', 'Potato', 'Turnip'])) else: print('Unrecognised argument.') if __name__ == '__main__': do_work()
Diese 27 Python-Zeilen funktionieren gut, sind aber sehr zerbrechlich. Jede Änderung, die Sie an Ihrem Programm vornehmen, erfordert viele andere unterstützende Codes. Wenn Sie einen Argumentnamen ändern, müssen Sie die Hilfeinformationen aktualisieren. Dieser Code kann leicht außer Kontrolle geraten.
Hier ist die gleiche Logik mit Klick:
import click import random @click.command() @click.option('--monty', default=False, help='Show a Monty Python quote.') @click.option('--veg', default=False, help='Show a random vegetable.') def do_work(monty, veg): """ Basic Click example will follow your commands""" if monty: print('What\'s this, then? "Romanes eunt domus"? People called Romanes, they go, the house?') if veg: print(random.choice(['Carrot', 'Potato', 'Turnip'])) if __name__ == '__main__': do_work()
Dieses Click-Beispiel implementiert dieselbe Logik in 16 Codezeilen. Die Argumente werden für Sie analysiert und der Hilfebildschirm wird generiert:
Dieser grundlegende Vergleich zeigt, wie viel Zeit und Aufwand Sie mit Programmen wie Click sparen können. Während die Befehlszeilenschnittstelle für den Endbenutzer möglicherweise gleich aussieht, ist der zugrunde liegende Code einfacher und Sie sparen viel Zeit beim Codieren. Alle Änderungen oder Aktualisierungen, die Sie in Zukunft schreiben, werden auch die Entwicklungszeit erheblich verlängern.
Erste Schritte mit Click for Python
Bevor Sie Click verwenden, möchten Sie möglicherweise eine virtuelle Umgebung konfigurieren. Erfahren Sie, wie Sie die virtuelle Python-Umgebung verwenden. Erfahren Sie, wie Sie die virtuelle Python-Umgebung verwenden ist für jedes Python-Projekt unerlässlich. Weiterlesen . Dadurch werden Konflikte zwischen Ihren Python-Paketen und Ihrem System-Python oder anderen Projekten, an denen Sie möglicherweise arbeiten, verhindert. Sie können Python auch in Ihrem Browser testen. Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Shells testen. Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Shells testen Testen Sie den Code direkt in Ihrem Browser. Hier sind die besten Online-Python-Interpreten, die wir gefunden haben. Lesen Sie mehr, wenn Sie mit Python und Click herumspielen möchten.
Stellen Sie schließlich sicher, dass Sie Python Version 3 ausführen. Click with Python Version 2 kann verwendet werden. Diese Beispiele sind jedoch in Python 3 enthalten. Erfahren Sie mehr über die Unterschiede zwischen Python 2 und Python 3.
Sobald Sie fertig sind, installieren Sie Klicken Sie in der Befehlszeile mit PIP (wie Sie PIP für Python installieren):
pip install click
Schreiben Ihres First Click-Programms
Beginnen Sie in einem Texteditor mit dem Importieren von Click:
import click
Erstellen Sie nach dem Import eine Methode und einen Haupteinstiegspunkt . In unserem OOP-Handbuch zu Python werden diese Themen ausführlicher behandelt. Sie bieten jedoch einen Speicherort für Ihren Code und eine Möglichkeit, Python mit der Ausführung zu beginnen:
import click import random def veg(): """ Basic method will return a random vegetable""" print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg()
Dieses sehr einfache Skript gibt ein zufälliges Gemüse aus. Ihr Code sieht möglicherweise anders aus, aber dieses einfache Beispiel lässt sich perfekt mit Click kombinieren.
Speichern Sie dies als click_example.py und führen Sie es dann in der Befehlszeile aus (nachdem Sie zu seiner Position navigiert haben):
python click_example.py
Sie sollten einen zufälligen Gemüsenamen sehen. Lassen Sie uns die Dinge verbessern, indem Sie Click hinzufügen. Ändern Sie Ihren Code so, dass er die Click-Dekoratoren und eine for- Schleife enthält:
@click.command() @click.option('--total', default=3, help='Number of vegetables to output.') def veg(total): """ Basic method will return a random vegetable""" for number in range(total): print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg()
Beim Laufen sehen Sie ein zufälliges Gemüse, das dreimal angezeigt wird.
Lassen Sie uns diese Änderungen aufschlüsseln. Der Dekorator @ click.command () konfiguriert Klicken Sie, um mit der Funktion zu arbeiten, die dem Dekorator unmittelbar folgt. In diesem Fall ist dies die Funktion veg () . Sie benötigen dies für jede Methode, die Sie mit Click verwenden möchten.
Der @ click.option- Dekorator konfiguriert click so, dass er Parameter von der Befehlszeile akzeptiert, die er an Ihre Methode übergibt . Hier werden drei Argumente verwendet:
- –Total: Dies ist der Befehlszeilenname für das Argument total .
- default: Wenn Sie bei der Verwendung Ihres Skripts kein total-Argument angeben, verwendet Click den Standardwert.
- help: Ein kurzer Satz, der erklärt, wie Sie Ihr Programm verwenden.
Mal sehen, Klick in Aktion. Führen Sie in der Befehlszeile Ihr Skript aus, übergeben Sie jedoch das Argument total wie folgt:
python click_example.py --total 10
Wenn Sie –total 10 in der Befehlszeile festlegen, druckt Ihr Skript zehn zufällige Gemüsesorten.
Wenn Sie das Flag –help übergeben, wird eine nette Hilfeseite mit den Optionen angezeigt, die Sie verwenden können:
python click_example.py --help
Weitere Befehle hinzufügen
Es ist möglich, viele Click-Dekoratoren für dieselbe Funktion zu verwenden. Fügen Sie der Gemüse- Funktion eine weitere Klick-Option hinzu:
@click.option('--gravy', default=False, help='Append "with gravy" to the vegetables.')
Vergessen Sie nicht, dies an die Methode zu übergeben:
def veg(total, gravy):
Jetzt, wenn Sie Ihre Datei ausführen, können Sie die Soße Flagge übergeben:
python click_example.py --gravy y
Der Hilfebildschirm hat sich ebenfalls geändert:
Hier ist der gesamte Code (mit einigen geringfügigen Umgestaltungen aus Gründen der Übersichtlichkeit):
import click import random @click.command() @click.option('--gravy', default=False, help='Append "with gravy" to the vegetables.') @click.option('--total', default=3, help='Number of vegetables to output.') def veg(total, gravy): """ Basic method will return a random vegetable""" for number in range(total): choice = random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']) if gravy: print(f'{choice} with gravy') else: print(choice) if __name__ == '__main__': veg()
Noch mehr Klickoptionen
Sobald Sie die Grundlagen kennen, können Sie sich mit komplexeren Klickoptionen befassen. In diesem Beispiel erfahren Sie, wie Sie mehrere Werte an ein einzelnes Argument übergeben, das Click in ein Tupel umwandelt. Weitere Informationen zu Tupeln finden Sie in unserer Anleitung zum Python-Wörterbuch.
Erstellen Sie eine neue Datei mit dem Namen click_example_2.py . Hier ist der Starter-Code, den Sie brauchen:
import click import random @click.command() def add(): """ Basic method will add two numbers together.""" pass if __name__ == '__main__': add()
Hier gibt es nichts Neues. Im vorherigen Abschnitt wird dieser Code ausführlich erläutert. Fügen Sie eine @ click.option mit dem Namen numbers hinzu :
@click.option('--numbers', nargs=2, type=int, help='Add two numbers together.')
Der einzige neue Code hier sind die Optionen nargs = 2 und type = int . Dies weist Click an, zwei Werte für die Option numbers zu akzeptieren und dass beide vom Typ Integer sein müssen. Sie können dies in eine beliebige Nummer oder einen (gültigen) Datentyp ändern.
Ändern Sie abschließend die Methode add, um das Argument numbers zu akzeptieren, und führen Sie eine Verarbeitung mit ihnen durch:
def add(numbers): """ Basic method will add two numbers together.""" result = numbers[0] + numbers[1] print(f'{numbers[0]} + {numbers[1]} = {result}')
Auf jeden Wert, den Sie übergeben, kann über das Objekt numbers zugegriffen werden. So verwenden Sie es in der Befehlszeile:
python click_example_2.py --numbers 1 2
Klicken Sie auf Ist die Lösung für Python-Dienstprogramme
Wie Sie gesehen haben, ist Click einfach zu bedienen, aber sehr leistungsfähig. Während diese Beispiele nur die Grundlagen von Click behandeln, gibt es viel mehr Funktionen, die Sie kennenlernen können, sobald Sie die Grundlagen genau verstanden haben.
Wenn Sie nach Python-Projekten suchen, mit denen Sie Ihre neu entdeckten Fähigkeiten üben können, warum nicht lernen, wie man ein Arduino mit Python steuert? Wie man ein Arduino mit Python programmiert und steuert? Leider ist es unmöglich um ein Arduino direkt in Python zu programmieren, aber Sie können es mit einem Python-Programm über USB steuern. Hier ist wie. Lesen Sie mehr oder wie Sie mit Python in Google Sheets lesen und schreiben können. Mit Python in Google Sheets lesen und schreiben. Mit Python in Google Sheets lesen und schreiben. Python mag seltsam und ungewöhnlich erscheinen, es ist jedoch einfach zu erlernen und zu verwenden. In diesem Artikel werde ich Ihnen zeigen, wie Sie mit Python in Google Sheets lesen und schreiben. Weiterlesen ? Jedes dieser Projekte eignet sich perfekt für die Konvertierung in Click!
Erfahren Sie mehr über: Coding Tutorials, Python.