Die Python ZLIB-Bibliothek bietet eine Python-Schnittstelle für die C-geschriebene ZLIB-Bibliothek, eine höhere Verallgemeinerung für entleerte verlustfreie Komprimierungsmethoden, eine höhere Verallgemeinerung. Sie können die ZLIB -Komprimierungsfunktion in kommerziellen Produkten verwenden, da sie kostenlos und nicht patentiert ist. Es ist über mehrere Plattformen hinweg tragbar, da es eine verlustfreie Komprimierung verwendet, was den Datenverlust während der Komprimierung und Dekompression verhindert. Ein weiterer signifikanter Vorteil ist, dass diese Komprimierungsmethode die Daten nicht vergrößert. Die ZLIB -Methoden zum Komprimieren und Dekomprimieren von Daten, DataStream und Dateien werden in diesem Tutorial behandelt.
Warum Zlib in Python verwenden??
In Bezug auf die Sicherheit spielt diese Bibliothek/dieses Modul eine wichtige Rolle. Zahlreiche Anwendungen erfordern die Fähigkeit, willkürliche Daten zu komprimieren und zu dekomprimieren, einschließlich Zeichenfolgen, Dateien und strukturiertem Inhalt in Memory. Eine der besten Funktionen des ZLIB -Modul.
Wie verwenden wir Zlibs Komprimierungs- und Dekompressionsfunktionen in Python??
Komprimierung und Dekompression sind die beiden bedeutendsten Funktionen der ZLIB -Bibliothek. Sowohl Komprimierung als auch Dekompressionsvorgänge können als einmalige Operationen oder durch Aufbrechen der Daten in Stücke durchgeführt werden, wie Sie aus einem Datenstrom sehen würden. Der folgende Abschnitt erläutert beide Betriebsmodi.
Kompression in Python Zlib
Jetzt werden wir sehen, wie Sie mithilfe der ZLIB -Bibliothek eine Datenzeichenfolge, Datenzeichenfolgen und Dateien komprimieren können.
Komprimieren von Datenzeichenfolgen
Das Komprimieren einer Zeichenfolge ist mit Hilfe der COMPRESS () -Funktion der ZLIB Library möglich. Die Syntax dieser Funktion ist ziemlich einfach und erfordert nur zwei Argumente.
Syntax:
Compress (Data_String, Ebene)
Hier ist Data_String die zu komprimierende Datenzeichenfolge, und das Stufeargument kann durch einen Ganzzahlwert angegeben werden, der möglicherweise von -1 bis 9 reichen kann. Dieser Pegelparameter bestimmt die Komprimierungsstufe. Wenn der Pegel als 1 angegeben ist, ist der Kompressionsniveau der niedrigste/Minimum. Es wird jedoch am schnellsten sein. Die langsamste Komprimierung, ich.e., 9 erzeugt den höchsten/maximalen Komprimierungsgrad. Die Standardeinstellung, Stufe 6, wird durch den Wert -1 dargestellt. Geschwindigkeit und Komprimierung werden zum Standardwert ausgeglichen. Es gibt keine Komprimierung auf Stufe 0.
Ein Beispiel für die Verwendung der Kompressmethode zu einer Zeichenfolge finden Sie unten:
Wenn wir den Parameter der Pegel als 0 angeben, gibt es keine Komprimierung:
Beim Vergleich der Ergebnisse wird der Komprimierungspegel auf 0 und 2 eingestellt. Sie könnten einen kleinen Unterschied sehen. Im hexadezimalen Format hat die Funktion bei Level = 2 eine Länge 62 zurückgegeben, während bei Stufe 0 eine Länge 68 zurückgegeben wird. Dieser Längenunterschied kommt, weil bei Level 0 keine Komprimierung auftritt.
Druckdatenströme
Die CompressObj () -Methode kann große Datenströme verarbeiten. Ein Kompressionsobjekt wird von der Funktion compressObj () zurückgegeben.
Syntax:
CompressObj (Ebene, Methode, Wbit, Memlevel, Strategie)
Abgesehen vom Parameter von String Data ist die einzige Unterscheidung zwischen den Parametern dieser Methode und denen von compress () der WBits -Parameter, der die Fenstergröße reguliert und feststellt, ob der Header und den Anhänger in die Ausgabe einbezogen werden oder nicht. Im Folgenden sind mögliche Wbits -Werte:
Wertebereich | Fenstergröße Logarithmus | Ausgang |
+9 bis +15 | Basis 2 | Die Anhänger- und ZLIB -Header sind enthalten. |
+9 bis -15 | Den Absolutwert des Wbits darstellen. | Der Kopfball und der Anhänger sind ausgeschlossen. |
+25 bis +31 | Die niedrigsten vier Bits des Wertes. | Der Header und die nachfolgende Prüfsumme sind enthalten. |
Das Methodenargument gibt den Komprimierungsalgorithmus an. Der Standardalgorithmus oder der derzeit verfügbare Algorithmus wird entleert. Das Strategieargument definiert die Kompressionsstimmung.
Der folgende Code zeigt, wie die Funktion compressObj () verwendet wird:
Wir haben einfache Zeichenfolgendaten verwendet, die kein großer Datenstrom sind, um zu demonstrieren, wie die Funktion compressObj () funktioniert. Die Zeichenfolge „Ich liebe es, Python -Codes zu schreiben“ wurde komprimiert. Diese Methode wird normalerweise angewendet, wenn die Streams zu groß oder schwer im Speicher zu speichern sind. Diese Technik ist in größeren Anwendungen von entscheidender Bedeutung, da wir die Komprimierung anpassen und sie verwenden können, um Daten in Stücken/Serien zu komprimieren.
Komprimieren einer Datei
Die Datei wird mit der Funktion comprision () komprimiert. Der .Die DOCX -Datei wird im folgenden Beispiel komprimiert.
Die beste Komprimierung, die dieser Algorithmus, Z Beste Komprimierung, bietet, wird in der Kompressfunktion verwendet. Das Verhältnis der Länge der komprimierten Daten zur ursprünglichen Datenlänge wird verwendet, um die Datenkomprimierung zu berechnen. Die Datei ist 6% komprimiert, wie in der Ausgabe zu sehen ist.
Dekompression in Python Zlib
Jetzt sehen wir mithilfe der ZLIB -Bibliothek eine Datenzeichenfolge, Datenzeichenfolgen und Dateien.
Dekomprimieren von Datenzeichenfolgen
Die Funktion decompress () macht es einfach, eine Reihe komprimierter Daten zu dekomprimieren.
Syntax:
decompress (Data_String, Wbit, bufsize)
Diese Funktion dekomprimiert die String -Daten -Bytes. Die Größe des Verlaufsvolkers kann mit dem Parameter Wbits festgelegt werden. Die Größe des größten Fensters wird als Standardeinstellung verwendet. Der Header und der Trailer der komprimierten Datei werden ebenfalls aufgefordert, enthalten zu sein. Mögliche Werte sind:
Wertebereich | Fenstergröße | Eingang |
+8 bis +15 | Basis 2 | Die Anhänger- und ZLIB -Header sind enthalten. |
-8 bis -15 | Der absolute Wert des Wbits. | Rohstream, Header und Anhänger sind ausgeschlossen. |
+24 bis +31 = 16 + (8 bis 15) | Die niedrigsten vier Bits des Wertes. | Die Anhänger- und ZLIB -Header sind enthalten. |
+40 bis +47 = 32 + (8 bis 15) | Die niedrigsten vier Bits des Wertes. | GZIP- oder ZLIB -Format |
Das bufsize Argument gibt den Anfangswert der Puffergröße an. Das Schlüsselmerkmal dieses Arguments ist jedoch, dass das, angegebene Angabe nicht genau ist, automatisch angepasst wird, wenn mehr Puffergröße erforderlich ist. Die komprimierte Datenzeichenfolge kann mit dem folgenden Beispiel dekomprimiert werden:
Dekomprimierung von Datenströmen
Abhängig von der Quelle und Größe Ihrer Daten erfordert die Dekomprimierung großer Datenströme möglicherweise eine Speicherverwaltung. Mit der Methode decompressObj () können Sie einen Datenstrom in mehrere Brocken aufteilen, die wir separat dekomprimieren können, wenn Sie nicht alle Ressourcen verwenden können oder nicht über genügend Speicher verfügen.
Syntax:
decompressObj (Wbits [, zDict])
Um die jeweiligen Daten zu dekomprimieren, werden wir das Dekompressionsobjekt verwenden, das die Dekompressobj () -Funktion zurückgibt. Der WBits -Parameter hat die gleichen Merkmale wie die zuvor beschriebenen für die Decompress () -Funktion.
Der länge komprimierte Strom beträgt 34. Nach der Dekomprimierung wird die Stromlänge von 26 zurückgegeben, was die tatsächliche Größe unseres Datenstroms war.
Dekomprimierung einer Datei
Die Daten in der Datei können leicht dekomprimiert werden, wie wir in früheren Beispielen gesehen haben. Der einzige Unterschied zwischen diesem und dem vorherigen Beispiel besteht darin, dass die Funktion decompress () verwendet wird, nachdem die komprimierten Daten aus der Datei abgerufen wurden. Diese Methode ist nützlich, wenn Daten kompakt genug sind, um bequem in den Speicher zu passen.
Die Probe.TXT -Datei mit der Zeichenfolge „Hello World I Love Python“ wurde gelesen. Wir haben uns für Decompress () anstelle von decompressObj () entschieden, weil die Datei eine kleine Zeichenfolge enthält.
Abschluss
Wir diskutierten, dass das Python ZLIB -Modul, wenn eine Anwendung eine sichere Komprimierung erfordert, nützlich ist. Obwohl die ZLIB -Bibliothek viele Funktionen hat, haben wir einige der häufigsten behandelt. Die Funktionen compress () und decompress () werden für kleine Daten verwendet, während die Funktionen von CompressObj () und DecompressObj () die Komprimierung und Dekompression großer Datenströme bieten und somit eine größere Flexibilität bieten.