Python Gzip -Modul

Python Gzip -Modul

In dieser Lektion werden wir lernen, wie wir Python nutzen können gzip Modul zum Lesen und Schreiben in die komprimierten Dateien in Python. Die größte Funktion, die uns dieses Modul bietet, ist, dass wir komprimierte Dateien als normale Dateiobjekte behandeln können, die uns vor der Komplexität des Verwaltens von Dateien und ihrem Lebenszyklus in unserem Code speichern und uns ermöglicht, uns auf die Kerngeschäftslogik des Programms zu konzentrieren.Der gzip Das Modul bietet uns fast die gleichen Funktionen wie die GNU -Programme wie Gunzip Und gzip.

Schreiben von komprimierten Dateien mit Open ()

Wir beginnen mit einem grundlegenden Beispiel, in dem wir eine GZIP -Datei erstellen und einige Daten in sie schreiben können. Dazu müssen wir eine Datei erstellen und mit dem Schreibmodus öffnen, damit Daten in sie eingefügt werden können. Schauen wir uns ein Beispielprogramm an, mit dem wir Daten in eine GZIP -Datei schreiben können:

GZIP importieren
IO importieren
OS importieren
output_file = 'linxHint_demo.txt.GZ '
write_mode = 'wb'
mit gzip.Öffnen Sie (output_file, write_mode) als Ausgabe:
mit IO.TextioWrapper (Ausgabe, Codierung = 'UTF-8') als Encode:
kodieren.Schreiben Sie ('Wir können in der Datei alles schreiben, was wir wollen.\N')
print (output_file,
'enthält', os.STAT (output_file).ST_SIZE, 'Bytes')
Betriebssystem.System ('Datei -b - -mime '.Format (output_file))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Schreiben in ZIP -Datei

Wenn Sie sich jetzt die Ordnerstruktur ansehen, in der Sie dieses Skript ausgeführt haben.

Schreiben Sie mehrere Zeilen in eine komprimierte Datei

Wir können auch mehrere Zeilen oder eine beliebige Anzahl von Zeilen in unserer GZIP -Datei auf sehr ähnliche Weise schreiben wie im vorherigen Beispiel. Um dieses Beispiel anders zu machen, werden wir auch das ITertools -Modul verwenden. Schauen wir uns das Beispielprogramm an:

GZIP importieren
IO importieren
OS importieren
ITertools importieren
output_file = 'linxHint_demo.txt.GZ '
write_mode = 'wb'
mit gzip.Öffnen Sie (output_file, write_mode) als Ausgabe:
mit IO.Textiowrapper (Ausgabe, Coding = 'UTF-8') als Enc:
Enc.WritEnines (
ITertools.Wiederholen ('LinuxHint, wiederholt die gleiche Zeile!.\ n ', 10)
)
Betriebssystem.System ('gzcat linxHint_demo.txt.GZ ')

Sehen wir uns die Ausgabe für diesen Befehl an:

Mehrere Zeilen schreiben

Lesen komprimierte Daten

Wir können die komprimierte Datei, die wir im letzten Beispiel erstellt haben offen Funktion:

GZIP importieren
IO importieren
OS importieren
Datei_name = 'linxHint_demo.txt.GZ '
Datei_mode = 'rb'
mit gzip.Öffnen Sie (Datei_Name, File_Mode) als input_file:
mit IO.Textiowrapper (input_file, coding = 'utf-8') als DEC:
drucken (dec.lesen())

Hier ist, was wir mit diesem Befehl zurückbekommen:

Lesen einer GZIP -Datei

Lesen von Streams

Aufgrund der Tatsache, dass Textdateien sehr groß sind, ist es intelligent, diese Dateien in einem Stream zu öffnen, anstatt die vollständige Datei in einem einzigen Objekt zu laden, das viele Systemspeicher einnimmt und in einigen Fällen sogar den Prozess verursachen kann vollständig abstürzen. Schauen wir uns ein Beispielprogramm an, in dem die angegebene komprimierte Datei in einem Stream gelesen wird:

GZIP importieren
von IO Import Bytesio
Binascii importieren
modus_write = 'wb'
modus_read = 'rb'
nicht_komprimiert = B'repeated Line X THE.\ n ' * 8
print ('nicht komprimierte Daten:', len (nicht_komprimiert))
drucken (nicht_komprimiert)
buf = bytesio ()
mit gzip.GZIPFILE (modus = modus_write, fileObj = buf) als Datei:
Datei.Schreiben (nicht_komprimiert)
komprimiert = buf.Wert erhalten()
print ("komprimierte Daten:", Len (komprimiert))
print (binascii.hexlify (komprimiert))
in_buffer = bytesio (komprimiert)
mit gzip.GZIPFILE (modus = modus_read, fileObj = in_buffer) als Datei:
read_data = Datei.Read (len (nicht_komprimiert))
print ('\ nreading it erneut:', len (read_data))
print (read_data)

Sehen wir uns die Ausgabe für diesen Befehl an:

Lesen der Gzip -Datei in einem Stream

Obwohl das Programm etwas lang war, haben wir nur Python -Module verwendet,.

Abschluss

In dieser Lektion haben wir uns angesehen, wie wir das Python -GZIP -Modul verwenden können, um Dateien in Python zu komprimieren und zu dekomprimieren. Die größte Funktion, die uns diese Bibliothek bietet, ist, dass wir komprimierte Dateien als normale Dateiobjekte behandeln können.

Lesen Sie hier mehr Python -basierte Beiträge.