Erstellen von hübschen Kommandozeilen Tools mit Click

Die Idee hinter Click, einem Paket für Python, ist die Möglichkeit für Entwickler schnell und einfach Konsolen Anwendungen zu schreiben.

In Python sind standardmäßig bereits Funktionen und Klassen zum Auslesen und Validieren von Kommandozeilenparametern enthalten. So gibt es bereits das mittlerweile als veraltet bezeichneten optparse und das neuere argparse. Beide sind sehr umfangreich, jedoch erschließen sich manche Funktionen nicht sofort und bedürfen einer gewissen Einarbeitungszeit. Neben der Vereinfachung zum Parsen von Parametern auf der Kommandozeile, sind in Click weitere Funktionen enthalten, die in diesem Artikel kurz vorgestellt werden.

Zum jetzigen Zeitpunkt ist Click bereits als Paket in den Repositories einiger Linux-Distributionen zu finden. So kann das Pakte zum Beispiel unter Ubuntu 14.04 und 16.04 für Python 3 wie folgt installiert werden.

$ sudo apt-get install python3-click

Wer es händisch installieren möchte oder bei wem es nicht in den Repositories der Linux-Distribution vorhanden ist, der kann Click wie folgt installieren.

$ pip install Click

Im folgenden Beispiel ist ein Programm mit zwei Parametern zu sehen. In diesem Fall kann -v/--verbose mehrfach angegeben werden und es wird die Häufigkeit gezählt und in einer Variable abgespeichert. Weiterhin gibt es den Parameter --string. Über diesen kann eine Zeichenkette an das Programm übergeben werden. Ist dies jedoch nicht der Fall, so bewirkt die zuätzlich angegene Option prompt="String", dass der Parameter vor dem Funktionsaufruf direkt über die Kommandozeile eingegeben werden muss.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import click

@click.command()
@click.option("-v", "--verbose", default=1, count=True, help="Increase verbosity")
@click.option("--string", prompt="String", help="Basic string")
def test_cmd(verbose, string):
    print(verbose)
    print(string)

if __name__ == '__main__':
    test_cmd()

Neben dem Auswerten von Kommandzozeilen Parametern kann auch der Text eingefärbt werden. Hierfür bietet Click zwei Möglichkeiten. Zum einen kann es unter Verwendung der Funktionen echo() und style() geschehen.

click.echo(click.style("test", fg="red", bg="white"))

Oder es wird die Funktion secho() verwendet.

click.secho("test", fg="red", bg="white")

Eine weitere Funktion ist das anzeigen eines Ladebalkens. Im folgenden Beispiel ist die Verwendung sehr minimalistisch dargestellt.

import click
import time

a = [1, 2, 3, 4, 5]
with .click.progressbar(a) as bar:
    for i in bar:
      print(i)
      time.sleep(1)

Weitere Beispiele können der Click Dokumentation entnommen werden.

Fazit

Wie bereits aus den kurzen Beispiel zu sehen sein sollte, kann Click an vielen Stellen die Entwicklung von Konsolenanwendungen erleichtern und beschleunigen. Neben den hier vorgestellten Funktionen sind noch weitere nützliche wie zum Beispiel eine click.pause()-Funktione enthalten.

Wer häufiger Anwendungen oder Skripte für die Konsole schreibt, der sollte sich Click definitiv einmal anschauen.

Links

Verwandte Artikel