Skip to content

Archives

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Categories

  • Žádné rubriky
Trend RepositoryArticles and guides
Articles

gzip – Podpora souborů gzip¶

On 24 listopadu, 2021 by admin

Zdrojový kód:

Tento modul poskytuje jednoduché rozhraní pro kompresi a dekompresi souborů stejně jako programy GNU gzip a gunzip.

Komprimaci dat zajišťuje modul zlib.

Modul gzip poskytuje třídu GzipFile a také komfortní funkceopen(), compress() a decompress().Třída GzipFile čte a zapisuje soubory ve formátu gzip,automaticky komprimuje nebo dekomprimuje data tak, aby vypadala jako běžný objekt souboru.

Všimněte si, že další formáty souborů, které mohou být dekomprimovány programygzip a gunzip, jako například formáty vytvořené programycompress a pack, nejsou tímto modulem podporovány.

Modul definuje následující položky:

gzip.open(jméno souboru, mode=’rb‘, compresslevel=9, encoding=None, errors=None, newline=None)¶

Otevře soubor komprimovaný pomocí gzip v binárním nebo textovém režimu a vrátí objekt souboru.

Argumentem jméno souboru může být skutečné jméno souboru (objekt str nebobytes) nebo existující objekt souboru, ze kterého se má číst nebo do kterého se má zapisovat.

Argument režim může být některý z 'r', 'rb', 'a', 'ab','w', 'wb', 'x' nebo 'xb' pro binární režim nebo 'rt','at', 'wt' nebo 'xt' pro textový režim. Výchozí hodnota je 'rb'.

Argument compresslevel je celé číslo od 0 do 9, stejně jako u konstruktoruGzipFile.

Pro binární režim je tato funkce ekvivalentní konstruktoru GzipFile: GzipFile(filename, mode, compresslevel). V tomto případě nesmí být uvedeny argumentyenkódování, chyby a nový řádek.

Pro textový režim je vytvořen objekt GzipFile a zabalen do instanceio.TextIOWrapper se zadaným kódováním, chováním při zpracování chyb a koncovkou (koncovkami) řádku.

Změněno ve verzi 3.3: Přidána podpora pro název souboru jako objekt souboru, podpora pro textový režim,a argumenty kódování, chyb a nového řádku.

Změněno ve verzi 3.4:

Změněno ve verzi 3.6: Přidána podpora režimů 'x', 'xb' a 'xt': Přijímá objekt podobný cestě.

výjimkagzip.BadGzipFile¶

Vyvolána výjimka pro neplatné soubory gzip. Dědí po OSError.EOFError a zlib.error Může být také vyvolána pro neplatné gzip soubory.

Nové ve verzi 3.8.

třídagzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)¶

Konstruktor pro třídu GzipFile, která simuluje většinu metod objektu souboru, s výjimkou metody truncate(). Alespoň jeden z objektů fileobj a filename musí mít netriviální hodnotu.

Nová instance třídy je založena na objektu fileobj, což může být běžný soubor, objektio.BytesIO nebo jakýkoli jiný objekt, který simuluje soubor. Výchozí hodnota je None, v takovém případě se otevře název souboru, aby poskytl objekt souboru.

Když souborobj není None, argument název souboru se použije pouze pro zahrnutí do hlavičky souboru gzip, která může obsahovat původní název nekomprimovaného souboru. Ve výchozím nastavení je to jméno souboru fileobj, pokud je rozeznatelné; v opačném případě je to prázdný řetězec a v tomto případě není původní jméno souboru do hlavičky zahrnuto.

Argument mode může být libovolný z 'r', 'rb', 'a', 'ab', 'w','wb', 'x' nebo 'xb', podle toho, zda se soubor bude číst nebo zapisovat. Výchozí je režim souboruobj, pokud je rozeznatelný; jinak je výchozí 'rb'. V příštích verzích Pythonu se režim fileobj nebude používat. Je lepší vždy zadat režim pro zápis.

Všimněte si, že soubor je vždy otevřen v binárním režimu. Chcete-li otevřít komprimovaný soubor v textovém režimu, použijte open() (nebo obalte GzipFile znakemio.TextIOWrapper).

Argument compresslevel je celé číslo od 0 do 9, které řídí úroveň komprese; 1 je nejrychlejší a vytváří nejmenší kompresi a 9 je nejpomalejší a vytváří největší kompresi. 0 je bez komprese. Výchozí hodnota je 9.

Argument mtime je nepovinný číselný časový údaj, který se při kompresi zapíše do pole času poslední modifikace v datovém toku. Měl by být uveden pouze v režimu komprese. Pokud je vynechán nebo None, použije se aktuální čas. Další podrobnosti naleznete v atributu mtime.

Voláním metody GzipFile objektu close() se neuzavřefileobj, protože byste mohli chtít za komprimovanádata připojit další materiál. To také umožňuje předat objekt io.BytesIO otevřený pro zápis jako fileobj a získat výslednou vyrovnávací paměť pomocí metody getvalue() objektu io.BytesIO.

GzipFile podporuje rozhraní io.BufferedIOBase,včetně iterace a příkazu with. Pouze metodatruncate() není implementována.

GzipFile také poskytuje následující metodu a atribut:

peek(n)¶

Čte n nekomprimovaných bajtů bez posunutí pozice souboru. pro splnění volání se provede maximálně jedno jediné čtení komprimovaného proudu. Počet vrácených bajtů může být větší nebo menší nežpožadovaný.

Poznámka

Přestože volání peek() nezmění pozici souboru GzipFile, může změnit pozici podkladového objektu souboru (např. pokud byl GzipFile vytvořen s parametremfileobj).

Novinka ve verzi 3.2.

mtime¶

Při dekomprimaci lze z tohoto atributu vyčíst hodnotu pole času poslední modifikace v naposledy čtené hlavičce jako celé číslo. Počáteční hodnota před načtením jakýchkoli hlaviček je None.

Všechny gzip komprimované toky musí obsahovat pole časové značky. Některé programy, například gunzip, časové razítko využívají. Formát je stejný jako návratová hodnota příkazutime.time() a atribut st_mtimeobjektu vráceného příkazem os.stat().

Změněno ve verzi 3.1: Byla přidána podpora příkazu with a argumentu konstruktorutime a atributu mtime.

Změněno ve verzi 3.2: Byla přidána podpora souborů s nulovým polštářem a souborů, které nelze vyhledat.

Změněno ve verzi 3.3: Byla implementována metoda io.BufferedIOBase.read1().

Změněno ve verzi 3.4:

Změněno ve verzi 3.5: Přidána podpora pro zápis objektů typu arbitrarybytes.Metoda read() nyní přijímá argumentNone.

Změněno ve verzi 3.6:

Odstraněno od verze 3.9: Otevření GzipFile pro zápis bez zadání modeargumentu je zastaralé.

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

Komprimuje data a vrací objekt bytes obsahující komprimovaná data. Compresslevel a mtime mají stejný význam jako ve výše uvedeném konstruktoru GzipFile.

Novinka ve verzi 3.2.

Změněno ve verzi 3.8: Přidán parametr mtime pro reprodukovatelný výstup.

gzip.decompress(data)¶

Dekomprimuje data a vrací objekt bytes obsahující nekomprimovaná data.

Nové ve verzi 3.2.

Příklady použití¶

Příklad načtení komprimovaného souboru:

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

Příklad vytvoření komprimovaného souboru GZIP:

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

Příklad komprese existujícího souboru GZIP:

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)

Příklad, jak GZIP komprimovat binární řetězec:

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

Viz také

Modul zlib

Základní modul komprese dat potřebný pro podporu formátu souboru gzip.

Rozhraní příkazového řádku¶

Modul gzip poskytuje jednoduché rozhraní příkazového řádku pro kompresi řádkových souborů.

Po spuštění modul gzip uchovává vstupní soubor(y).

Změněno ve verzi 3.8:

Volby příkazového řádku¶

file¶

Pokud není soubor zadán, čte se z sys.stdin.

--fast¶

Určuje nejrychlejší metodu komprese (menší komprese).

--best¶

Určuje nejpomalejší metodu komprese (nejlepší komprese).

-d, --decompress¶

Dekomprimuje zadaný soubor.

-h, --help¶

Zobrazí nápovědu.

.

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Archivy

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Základní informace

  • Přihlásit se
  • Zdroj kanálů (příspěvky)
  • Kanál komentářů
  • Česká lokalizace
  • 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