Programmierpraktikum SoSe 2024, Bachelor Informatik, FU Berlin
ProPra2024 > Bibliotheken > Python-Standardbibliothek > m_argparse

argparse: Kommandozeilenparameter analysieren

Trial

Ziel

Ich verstehe, was man mit Pythons argparse-Modul tun kann und habe einiges davon erfolgreich ausprobiert.

Hintergrund

Ein Python Programm, das auf der Kommandozeile aufgerufen werden soll, muss meistens Argumente verarbeiten, die beim Aufruf mit auf der Kommandozeile angegeben werden, etwa bei grep -n alias ~/.bashrc.

Das kann schnell ganz schön kompliziert werden, deshalb ist es schön, wenn eine Bibliothek diese Arbeit vereinfacht. Das ist der Job von argparse.

Loose

Arbeitsschritte

Die Referenzdoku: Nicht so einfach!

Leider ist die normale Dokumentation von argparse nicht so gut verständlich wie sonst meistens. Lesen Sie diese Seite bis einschließlich der Tabelle bei "Quick Links for add_argument()". Versuchen Sie, ein ungefähres Verständnis der Tabelleneinträge zu entwickeln, ohne die Details nachzulesen.

Das bleibt an vielen Stellen ziemlich ungefähr, nicht wahr?

Deshalb nähern wir uns diesem Modul lieber über einen kleinen Kurs:

Das argparse-Tutorial: Besser!

Denken und arbeiten Sie Schritte durch, die auf der Seite Argparse Tutorial angegeben sind. Benutzen Sie dafür eine Datei namens argparsetest.py. Führen Sie die Schritte des Tutorials dabei jeweils selber aus und spielen Sie ruhig auch ein wenig über den Text hinaus damit herum.

Es hilft dem Verständnis z.B. erheblich, wenn Sie den Programmtext selbst eintippen (statt ihn zu kopieren) und dabei ein wenig abwandeln, um sich davon zu überzeugen, dass das die Wirkung hat, die Sie erwarten.

Und jetzt selber

Bauen Sie nun einen ArgumentParser, der folgende Kommandosyntax verarbeiten kann:

argparsetest --config configfile --maxdepth N --batch file...
(was auch immer das bedeuten soll; das soll uns hier egal sein) wobei die flags auch als -c, -m oder --depth oder -d, -b abgekürzt werden können.
configfile hat den Standardwert argparse.config, N hat den Standardwert 1.
file... ist eine Liste von 1 oder mehr Dateinamen.

Program

Abgabe

Geben Sie zwei Dateien ab

  • argparsetest.py
  • m_argparse.md mit einem Kommandoprotokoll, in dem Sie argparsetest viermal mit sehr verschiedenen Argumenten aufrufen (davon zweimal korrekt und zweimal unzulässig), um zu zeigen, dass es wohl wie gewünscht funktioniert.