Python Tutorial, Teil 9 Die Python-Standardbibliothek

Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten |

Bevor wir in die objektorientierte Programmierung mit Python einsteigen, sehen wir uns noch einmal die äußerst umfangreiche Python-Standardbibliothek an. Ein paar Module erläutern wir anhand kurzer Beispiele.

Anbieter zum Thema

Die Python-Standardbibliothek bildet analog zu den Vertretern anderer Programmiersprachen viele grundlegende Funktionen ab.
Die Python-Standardbibliothek bildet analog zu den Vertretern anderer Programmiersprachen viele grundlegende Funktionen ab.
(Bild: Drilling / Python.org)

Überblick über die Funktionen der Python-Standardbibliothek.
Überblick über die Funktionen der Python-Standardbibliothek.
(Bild: Python.org)

Zur Erinnerung: die Python-Standardbibliothek ist in jeder Python-Installation verfügbar. Sie bringt eine riesige Anzahl sehr nützlicher Module mit. Jeder angehende Python-Entwickler muss sich daher mit der Python-Standardbibliothek vertraut machen. Viele Basis-Probleme in der Programmierung lassen sich nämlich einfacher und schneller lösen, wenn man mit den Modulen in dieser Bibliothek vertraut ist.

Im Folgenden präsentieren wir einige Beispiele. Die teilweise sehr komplexen Einzelheiten zu allen Modulen der Python-Standardbibliothek finden sich bei Bedarf in der Python Library Reference, die übrigens auch Bestandteil jeder Python-Installation sind. Diese listet z. B. auch auf einen Blick sämtliche im Python-Interpreter fest eingebaute Funktionen.

Python-Tutorial
Bildergalerie mit 10 Bildern

Dabei haben wir in den vergangenen Teilen schon zahlreiche Funktionen aus unterschiedlichen Modulen (z. B. aus „math“, "sys", "re", „random“ oder „pickle“) verwendet. Hier noch eine Auswahl weiterer nützlicher Module und Funktionen.

OS

Das os-Modul bindet Funktionen des Betriebssystems ein.
Das os-Modul bindet Funktionen des Betriebssystems ein.
(Bild: Drilling)

So findet man z. B. im Modul „os“ aus dem Bereich Generic Operating System Services sehr viele Funktionen zur Interaktion mit dem Betriebssystem, auf dem der Python-Interpreter ausgeführt wird. Importieren wir zunächst das Modul:

>>> import os

Mittels …

>>> os.getcwd()

… ist es möglich, das momentane Arbeitsverzeichnis zu ermitteln. Selbstverständlich lässt sich dieses auch ändern:

>>> os.chdir("Y:\Dev\Py")

Auch Kommandos wie mkdir lassen sich in der Systemshell ausführen

>>> os.system("mkdir Python-Kurs")

Die obige Abbildung zeigt die Ergebnisse.

Das Help-Kommando zeigt neben den Funktionen eines Moduls auch eine Kurzbeschreibung.
Das Help-Kommando zeigt neben den Funktionen eines Moduls auch eine Kurzbeschreibung.
(Bild: Drilling)

Möchte man sämtliche Funktionen eines sehr großen Moduls wie "os" ermitteln, kann man die Funktion dir(os) oder besser help (os) verwenden. Unter den möglichen Aufrufen wird dabei auch ein kurzer Beschreibungstext eingeblendet. Der Aufruf der Hilfe funktioniert selbstredend auch für alle anderen Module und trägt anfangs sehr zum Verständnis bei.

Shutil

Möchte man umfangreichere Arbeiten mit Dateien und Verzeichnissen im Rahmen der Shell erledigen, kann man das Modul shutil als Schnittstelle verwenden:

ShUtil ist die Abkürzung für Shell Utilities, das Modul erleichtert unter anderem die Arbeit mit Dateien.
ShUtil ist die Abkürzung für Shell Utilities, das Modul erleichtert unter anderem die Arbeit mit Dateien.
(Bild: Drilling)

>>> import shutil

Auf diese Weise lassen sich z. B. Dateien im Python-Kontext kopieren.

>> shutil.copyfile("teil6-module.py", "module.py")

Genauso funktioniert das Verschieben:

>>> shutil.move("module.py","Python-Kurs/module.py")

Datetime

Das Modul "datetime" stellt Klassen für einige einfache aber auch komplexere Arbeiten im Zusammenhang mit Datum und Uhrzeit zur Verfügung. Zwar unterstützt das Modul auch das Rechnen selbst mit Datum und Uhrzeit, sowie das Verwenden von Zeitzonen, der Haupteinsatzzweck liegt aber in der Implementation von Zugriffen auf Attribute für die Ausgabeformatierung und -manipulation.

Datum, Uhrzeit und entsprechende Formatierungsoptinien liefert das Datetime-Modul.
Datum, Uhrzeit und entsprechende Formatierungsoptinien liefert das Datetime-Modul.
(Bild: Drilling)

Hier ein einfaches Beispiel. Zunächst importieren wie aus dem ganzen Modul datetime nur die Funktion date und verwenden sie wie folgt:

>>> from datetime import date
>>> jetzt = date.today()
>>> jetzt

Die Ausgabe sieht dann so aus:

>>> datetime.date(2018, 6, 8)

Jetzt können wie ein wenig mit dem Formatierungsoptionen spielen, z. B.:

>>> jetzt.strftime("%m-%d-%y. %d %b %Y ist ein %A am %d. Tag im %B.")

Das Ergebnis lautet wie in der Abbildung zu sehen: „'06-09-18. 09 Juni 2018 ist ein Saturday am 09. Tag im June.“

Selbstverständlich kann das Ergebnis auch in Berechnungen einfließen:

>>> Tag-Erstzulassung = date(2015, 9, 25)
>>> Alter = jetzt - Tag-Erstzulassung
>>> alter.days

Data Persistence – sqlite3

Aus dem Bereich Data Persistence kennen wir bereits das pickle-Modul zum Lesen und Schreiben von Dateien. Werfen wie nun noch eine Blick auf das sqlite3-Modul, eine DB-API-Schnittstelle für SQLite-Datenbanken.

Sqlite3 ist eine Bibliothek, die eine einfache, festplattenbasierte Datenbank bereitstellt, die keinen separaten Serverprozess erfordert und den Zugriff mit Hilfe einer nicht standardmäßigen Variante von SQL ermöglicht. Einige Anwendungen können sqlite für die interne Datenspeicherung verwenden. Es ist auch möglich, eine Anwendung mit sqlite zu prototypisieren und dann den Code in eine größere Datenbank wie PostgreSQL oder Oracle zu portieren.

Python-Tutorial
Bildergalerie mit 10 Bildern

Das sqlite3-Modul stellt konkret eine SQL-Schnittstelle bereit, die mit der von PEP 249 beschriebenen DB-API 2.0-Spezifikation kompatibel ist. Um das Modul zu verwenden, muss der Nutzer zuerst ein Connection-Objekt erstellen, das die Datenbank darstellt. In folgendem Beispiel werden die Daten in der Datei beispiel.db gespeichert:

>>>import sqlite3
>>>conn = sqlite3.connect(' beispiel.db')

Optional kann der User auch den speziellen Namen „: memory“ verwenden, um eine Datenbank im Arbeitsspeicher zu erstellen. Wurde eine Verbindung hergestellt, kann man ein Cursor-Objekt erstellen und seine "execute ()"-Methode aufrufen, um SQL-Befehle auszuführen:

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE artikel (datum text, bezeichnung text, menge real, preis real)''')

# Insert a row of data
c.execute("INSERT INTO artikel VALUES ('2018-02-06','notebooks',3,540.18)")

# Save (commit) the changes
conn.commit()
conn.close()

(ID:45367375)