Optionen vorbelegen

Docopt kann Vorgabewerte verarbeiten. Dazu ergänzen Sie bei der Beschreibung der jeweiligen Option die Zeichenkette [default: Wert], wobei Sie Wert konkret benennen. Das Beispiel in Listing 8 nutzt das zum Berechnen der Umsatzsteuer aus: Machen Sie keine andere Angabe, verwendet es als Vorgabewert 19 Prozent. Die dafür verantwortliche Zeile 9 lässt sich wie folgt lesen: entweder -t oder --tax, gefolgt von einem Prozentwert und einem Zahlenwert. Geben Sie weder -t oder --tax an, setzt das Programm den Wert dafür auf 19 Prozent.

Die beiden Zeilen 19 und 20 lesen den Zahlenwert und den Prozentsatz aus. In Zeile 21 berechnet das Skript den Wert für die Steuer, in Zeile 22 gibt es ihn als Betrag mit maximal zwei Nachkommastellen aus. Dafür sorgt die Angabe %.2f im Print-Statement. Abbildung 2 illustriert die Ausgabe des Programms mit verschiedenen Werten im Aufruf – ohne Angabe des Prozentsatzes, mit 7 Prozent und in Kurzschreibweise, mit 15 Prozent in Langform und am Ende gänzlich ohne Parameter.

Listing 8

#!/usr/bin/python
"""Usage:
  ./ust.py <value>
./ust.py -t <percentage> <value>
  ./ust.py --tax=percentage <value>
 Options:
  -t <percentage> <value> --tax=<percentage> <value>  calculate tax [default: 19]
"""
# include docopt module
from docopt import docopt
if __name__ == '__main__':
  arguments = docopt(__doc__)
  print (arguments)
  value = int(arguments["<value>"])
  percentage = int(arguments["--tax"])
  tax = value * percentage / 100
  print("the %i percent tax for %i is %.2f" % (percentage, value,tax))
Abbildung 2: Parameterauswertung im Umsatzsteuerprogramm mit Vorgabewerten.

Fazit

Das von Vladimir Keleshev im Jahr 2012 erstmalig entwickelte Docopt-Projekt für Python hatte einen gewaltigen Zuspruch und breitete sich in der Folge rasant auf andere Programmiersprachen aus, für die es heute als freie Bibliothek bereitsteht. Mit Docopt generieren Sie schnell und einfach Hilfstexte und werten komfortabel die Aufrufparameter für ein Programm auf der Kommandozeile aus.

Der Vorteil dabei liegt klar auf der Hand: Der Einsatz der Bibliothek erspart das Einbinden von Argparse und viele If-Abfragen. Dass der Docstring gleich noch den Hilfetext für die Kommandozeile liefert, halbiert quasi den Aufwand. Das macht sich insbesondere bei umfangreicheren Schnittstellen bezahlt. Allerdings erfordert Docopt ein Umdenken bei der Arbeit: Das Definieren der Befehle, Argumente und Optionen erfordert verschiedene Arten von Klammern (eckige, spitze und runde), die Sie für eine einwandfreie Funktion sauber setzen müssen. Haben Sie das Konzept aber erst einmal verinnerlicht, macht Ihnen Docopt das Leben leichter. 

Über die Autoren

Frank Hofmann arbeitet von unterwegs, bevorzugt in Berlin, Genf und Kapstadt, als Entwickler, Trainer und Autor. Er ist Koautor des Debian-Paketmanagement-Buchs (http://www.dpmb.org). Mandy Neumeyer arbeitet im Tourismus, lebt seit neun Jahren in Südafrika und baut zurzeit ein zusätzliches Einkommen als digitaler Nomade auf.

Infos

[1] "Basics of the Unix Philosophy": http://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html

[2] Helfer für die Kommandozeile: Axel Beckert: "Die Helfer der Kommandozeile", http://noone.org/talks/commandline-helpers/

[3] CLI-Argumente in Python: Frank Hofmann, "Command Line Arguments in Python", http://www.stackabuse.com/command-line-arguments-in-python/

[4] Docopt: http://docopt.org

[5] Literate Programming: Wolfram Eifler, "Literate Programming mit Python", LM 01/2016, http://www.linux-magazin.de/Ausgaben/2016/01/Literate-Programming

[6] Python-Docstrings: http://www.pythonforbeginners.com/basics/python-docstrings

[7] "Standard Command-Line Options": http://tldp.org/LDP/abs/html/standard-options.html

[8] Standards für CLIs: https://www.gnu.org/prep/standards/html_node/

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Check inklusive
    Wer mit Python programmiert, bekommt mit dem Doctest-Modul eine einfache Möglichkeit, die Programmfunktionen anschaulich zu dokumentieren und gleichzeitig zu testen.
  • Funktionen, Module und Pakete in Python
    Gliedern Sie Ihre Python-Programme in Funktionen, Module und Pakete. Python bietet Ihnen ebenfalls einige davon.
  • Entwicklungshelfer
    Nachdem in den ersten Teilen der Python-Einführung die Sprache beschrieben wurde, geht es im letzten Teil um nützliche Hilfen rund um Python.
  • Bash-Konfiguration, die zweite
    In diesem zweiten Teil der Serie über die Konfiguration der Bash wird es noch einmal praktisch: Das Einstellen des Prompts, und die für die Fehlersuche so nützlichen Tracing-Modi werden beschrieben.
  • Shell-Tipps
    Unter Linux werden wie in jedem Betriebssystem immer wieder Dateien und Verzeichnisse gelöscht. Normalerweise treten dabei keine Probleme auf. Es gibt aber einige Besonderheiten, über die sich ein Anwender im Klaren sein sollte. Einige Problemfälle und mögliche Lösungen werden hier kurz vorgestellt.
Kommentare

Infos zur Publikation

LU 02/2018: PAKETE VERWALTEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 0 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...
sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 2 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...