33 Datenspeicherung 

In den folgenden Abschnitten werden wir uns mit der permanenten Speicherung von Daten in den verschiedensten Formaten befassen. Das schließt unter anderem komprimierte Archive, XML-Dateien und Datenbanken ein.
33.1 Komprimierte Dateien lesen und schreiben – gzip 

Mit dem Modul gzip der Standardbibliothek können Sie auf einfache Weise Dateien verarbeiten, die mit der zlib-Bibliothek[ 137 ](Die zlib ist eine quelloffene Kompressionsbibliothek, die unter anderem vom Unix-Programm gzip verwendet wird. Nähere Informationen finden Sie auf der Website der Bibliothek unter http://www.zlib.net. ) erstellt wurden. Außerdem können Sie damit zlib-komprimierte Dateien erzeugen.
Das Modul stellt eine Funktion namens open bereit, die sich in ihrer Verwendung an die Built-in Function open anlehnt.
gzip.open(filename, [mode, compressleve])
Die Funktion gzip.open gibt ein Objekt zurück, das wie ein ganz normales Dateiobjekt verwendet werden kann.
Die Parameter filename und mode sind gleichbedeutend mit denen der Built-in Function open.
Mit dem letzten Parameter, compresslevel, können Sie angeben, wie stark die Daten beim Schreiben in die Datei komprimiert werden sollen. Erlaubt sind Ganzzahlen von 0 bis 9, wobei 0 für die schlechteste und 9 für die beste Kompressionsstufe steht. Je höher die Kompressionsstufe ist, desto mehr Rechenzeit ist auch für das Komprimieren der Daten erforderlich. Wird der Parameter compresslevel nicht angegeben, verwendet gzip standardmäßig die stärkste Kompression.
>>> import gzip
>>> f = gzip.open("testdatei.gz", "wb")
>>> f.write(b"Hallo Welt")
10
>>> f.close()
>>> g = gzip.open("testdatei.gz")
>>> g.read()
b'Hallo Welt'
In dem Beispiel schreiben wir einen einfachen bytes-String in die Datei testdatei.gz und lesen ihn anschließend wieder aus.
Andere Module für den Zugriff auf komprimierte Daten
Es existieren in der Standardbibliothek von Python weitere Module, die den Zugriff auf komprimierte Daten erlauben. Da diese dem eben vorgestellten Modul gzip stark ähneln, verzichten wir an dieser Stelle auf eine ausführliche Beschreibung und verweisen auf die Python-Dokumentation.
Tabelle 33.1 gibt Ihnen einen Überblick über alle Module, die komprimierte Daten verwalten:
Modul | Beschreibung |
---|---|
bz2 |
Bietet komfortablen Zugriff auf Daten, die mit dem bzip2-Algorithmus komprimiert wurden, und ermöglicht es, neue komprimierte Dateien zu erzeugen. In der Regel ist die Kompression von bzip2 der von zlib in puncto Kompressionsrate überlegen. |
gzip | Bietet komfortablen Zugriff auf Daten, die mit zlib komprimiert wurden. |
lzma | Ermöglich den Zugriff auf LZMA-komprimierte Dateien in den Formaten .xz und .lzma. Das LZMA-Verfahren zeichnet sich durch seine gute Kompressionsrate und die hohe Geschwindigkeit beim Entpacken aus. |
zlib |
Eine Low-Level-Bibliothek, die direkten Zugriff auf die Funktionen der zlib ermöglicht. Mit ihr ist es unter anderem möglich, Strings zu komprimieren oder zu entpacken. Das Modul gzip greift intern auf das Modul zlib zurück. |
zipfile | Ermöglicht den Zugriff auf ZIP-Archive, wie sie beispielsweise von dem bekannten Programm WinZip erstellt werden. Auch die Manipulation und Erzeugung neuer Archive ist möglich. |
tarfile | Implementiert Funktionen und Klassen, um die in der Unix-Welt weitverbreiteten TAR-Archive zu lesen oder zu schreiben. |
Tabelle 33.1 Übersicht über Pythons Kompressionsmodule