Skip to content

Archives

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Categories

  • Keine Kategorien
Trend RepositoryArticles and guides
Articles

gzip – Unterstützung für gzip-Dateien¶

On November 24, 2021 by admin

Quellcode: Lib/gzip.py

Dieses Modul bietet eine einfache Schnittstelle zum Komprimieren und Dekomprimieren von Dateien, so wie es die GNU-Programme gzip und gunzip tun würden.

Die Datenkompression wird vom Modul zlib bereitgestellt.

Das Modul gzip stellt die Klasse GzipFile sowie die Komfortfunktionen open(), compress() und decompress() bereit.Die Klasse GzipFile liest und schreibt Dateien im gzip-Format, wobei die Daten automatisch komprimiert oder dekomprimiert werden, so dass sie wie ein gewöhnliches Dateiobjekt aussehen.

Bitte beachten Sie, dass zusätzliche Dateiformate, die von den Programmen gzip und gunzip dekomprimiert werden können, wie z.B. die von compress und pack erzeugten, von diesem Modul nicht unterstützt werden.

Das Modul definiert die folgenden Elemente:

gzip.open(filename, mode=’rb‘, compresslevel=9, encoding=None, errors=None, newline=None)¶

Öffnet eine gzip-komprimierte Datei im Binär- oder Textmodus und gibt ein Datei-Objekt zurück.

Das Argument filename kann ein tatsächlicher Dateiname sein (ein str oderbytes Objekt), oder ein bestehendes Dateiobjekt, aus dem gelesen oder in das geschrieben werden soll.

Das Argument mode kann einer der Werte 'r', 'rb', 'a', 'ab','w', 'wb', 'x' oder 'xb' für den Binärmodus oder 'rt','at', 'wt' oder 'xt' für den Textmodus sein. Die Voreinstellung ist 'rb'.

Das Argument compresslevel ist eine ganze Zahl von 0 bis 9, wie beim KonstruktorGzipFile.

Für den Binärmodus entspricht diese Funktion dem Konstruktor GzipFile: GzipFile(filename, mode, compresslevel). In diesem Fall müssen die Argumente encoding, errors und newline nicht angegeben werden.

Für den Textmodus wird ein GzipFile-Objekt erzeugt und in eineio.TextIOWrapper-Instanz mit dem angegebenen encoding, Fehlerbehandlung und Zeilenende(n) verpackt.

Geändert in Version 3.3: Unterstützung für filename als Dateiobjekt, Unterstützung für den Textmodus und die Argumente Kodierung, Fehler und Zeilenumbruch hinzugefügt.

Geändert in Version 3.4: Unterstützung für die Modi 'x', 'xb' und 'xt' hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

exceptiongzip.BadGzipFile¶

Eine Ausnahme, die bei ungültigen gzip-Dateien ausgelöst wird. Sie erbt OSError.EOFError und zlib.error können auch für ungültige gzip-Dateien ausgelöst werden.

Neu in Version 3.8.

classgzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)

Konstruktor für die Klasse GzipFile, die die meisten Methoden eines File-Objekts simuliert, mit Ausnahme der truncate()Methode. Mindestens eines von fileobj und filename muss einen nicht-trivialen Wert haben.

Die neue Klasseninstanz basiert auf fileobj, das eine reguläre Datei, einio.BytesIO Objekt oder ein beliebiges anderes Objekt sein kann, das eine Datei simuliert. Der Standardwert ist None, in diesem Fall wird filename geöffnet, um ein Dateiobjekt bereitzustellen.

Wenn fileobj nicht None ist, wird das Argument filename nur verwendet, um in den Header der gzip-Datei aufgenommen zu werden, der den Originaldateinamen der unkomprimierten Datei enthalten kann. Der Standardwert ist der Dateiname von fileobj, wenn dieser erkennbar ist; andernfalls ist es die leere Zeichenkette, und in diesem Fall wird der ursprüngliche Dateiname nicht in den Header aufgenommen.

Das Argument mode kann einer der Werte 'r', 'rb', 'a', 'ab', 'w','wb', 'x' oder 'xb' sein, je nachdem, ob die Datei gelesen oder geschrieben wird. Die Vorgabe ist der Modus von fileobj, wenn dieser erkennbar ist; andernfalls ist die Vorgabe 'rb'. In zukünftigen Python-Versionen wird der Modus von fileobj nicht mehr verwendet werden. Es ist besser, immer den Modus zum Schreiben anzugeben.

Beachten Sie, dass die Datei immer im Binärmodus geöffnet wird. Um eine komprimierte Datei im Textmodus zu öffnen, verwenden Sie open() (oder umschließen Sie Ihr GzipFile mit einemio.TextIOWrapper).

Das Argument compresslevel ist eine ganze Zahl von 0 bis 9, die den Grad der Komprimierung steuert; 1 ist am schnellsten und erzeugt die geringste Komprimierung, und 9 ist am langsamsten und erzeugt die stärkste Komprimierung. 0 ist keine Komprimierung. Die Vorgabe ist 9.

Das Argument mtime ist ein optionaler numerischer Zeitstempel, der bei der Komprimierung in das Feld für die letzte Änderungszeit im Stream geschrieben wird. Es sollte nur im Komprimierungsmodus angegeben werden. Wenn es weggelassen wird oder None, wird die aktuelle Zeit verwendet. Siehe das mtime-Attribut für weitere Details.

Durch den Aufruf der close()-Methode eines GzipFile-Objekts wird fileobj nicht geschlossen, da Sie möglicherweise weiteres Material nach den komprimierten Daten anhängen möchten. So kann man auch ein zum Schreiben geöffnetes io.BytesIO-Objekt als fileobj übergeben und den resultierenden Speicherpuffer mit der getvalue()-Methode des io.BytesIO-Objekts abrufen.

GzipFile unterstützt die io.BufferedIOBase-Schnittstelle, einschließlich Iteration und der with-Anweisung. Nur die Methode truncate() ist nicht implementiert.

GzipFile bietet außerdem die folgende Methode und das folgende Attribut:

peek(n)¶

Lesen von n unkomprimierten Bytes, ohne die Dateiposition voranzutreiben.Es wird höchstens ein einziges Lesen des komprimierten Streams durchgeführt, um den Aufruf zu erfüllen. Die Anzahl der zurückgegebenen Bytes kann mehr oder weniger sein als angefordert.

Hinweis

Während der Aufruf von peek() die Dateiposition der GzipFile nicht ändert, kann er die Position des zugrundeliegenden Dateiobjekts ändern (z.B. wenn das GzipFile mit dem Parameterfileobj konstruiert wurde).

Neu in Version 3.2.

mtime¶

Beim Dekomprimieren kann der Wert des Feldes für die letzte Änderungszeit im zuletzt gelesenen Header als Ganzzahl aus diesem Attribut gelesen werden. Der Anfangswert vor dem Lesen von Headern ist None.

Alle gzip-komprimierten Datenströme müssen das Zeitstempelfeld enthalten. Einige Programme, wie gunzip, verwenden den Zeitstempel. Das Format ist dasselbe wie der Rückgabewert von time.time() und das st_mtime-Attribut des von os.stat() zurückgegebenen Objekts.

Geändert in Version 3.1: Unterstützung für die with-Anweisung wurde hinzugefügt, zusammen mit dem Konstruktorargument time und dem Attribut mtime.

Änderung in Version 3.2: Unterstützung für nullgefüllte und nicht auffindbare Dateien wurde hinzugefügt.

Änderung in Version 3.3: Die Methode io.BufferedIOBase.read1() ist jetzt implementiert.

Änderung in Version 3.4: Unterstützung für die Modi 'x' und 'xb' wurde hinzugefügt.

Änderung in Version 3.5: Unterstützung für das Schreiben beliebiger Bytes-ähnlicher Objekte wurde hinzugefügt.

Änderung in Version 3.6: Die Methode read() akzeptiert jetzt ein Argument vonNone.

: Akzeptiert ein pfadartiges Objekt.

Veraltet seit Version 3.9: Das Öffnen von GzipFile zum Schreiben ohne Angabe des Modearguments ist veraltet.

gzip.compress(data, compresslevel=9, *, mtime=None)¶

Komprimiert die Daten und gibt ein bytesObjekt mit den komprimierten Daten zurück. compresslevel und mtime haben die gleiche Bedeutung wie im obigen GzipFile Konstruktor.

Neu in Version 3.2.

Geändert in Version 3.8: Hinzufügen des Parameters mtime für eine reproduzierbare Ausgabe.

gzip.decompress(Daten)

Dekomprimieren Sie die Daten und geben Sie ein bytes Objekt zurück, das die nicht komprimierten Daten enthält.

Neu in Version 3.2.

Verwendungsbeispiele¶

Beispiel für das Lesen einer komprimierten Datei:

import gzipwith gzip.open('/home/joe/file.txt.gz', 'rb') as f: file_content = f.read()

Beispiel für das Erstellen einer komprimierten GZIP-Datei:

import gzipcontent = b"Lots of content here"with gzip.open('/home/joe/file.txt.gz', 'wb') as f: f.write(content)

Beispiel für die GZIP-Komprimierung einer vorhandenen Datei:

import gzipimport shutilwith open('/home/joe/file.txt', 'rb') as f_in: with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out: shutil.copyfileobj(f_in, f_out)

Beispiel für die GZIP-Komprimierung eines binären Strings:

import gzips_in = b"Lots of content here"s_out = gzip.compress(s_in)

Siehe auch

Modul zlib

Das grundlegende Datenkompressionsmodul, das zur Unterstützung des gzip-Dateiformats benötigt wird.

Befehlszeilenschnittstelle¶

Das gzipModul bietet eine einfache Befehlszeilenschnittstelle zum Komprimieren oder Dekomprimieren von Dateien.

Nach der Ausführung behält das gzipModul die Eingabedatei(en) bei.

Geändert in Version 3.8: Hinzufügen einer neuen Befehlszeilenschnittstelle mit einer Verwendung.

Befehlszeilenoptionen¶

file¶

Wenn keine Datei angegeben wird, wird aus sys.stdin gelesen.

--fast¶

Gibt die schnellste Komprimierungsmethode an (weniger Komprimierung).

--best¶

Indiziert die langsamste Komprimierungsmethode (beste Komprimierung).

-d, --decompress¶

Dekomprimiere die angegebene Datei.

-h, --help¶

Zeige die Hilfemeldung.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Archive

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentare-Feed
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress