Salta al contenuto

Archivi

  • Gennaio 2022
  • Dicembre 2021
  • Novembre 2021
  • Ottobre 2021
  • Settembre 2021

Categorie

  • Nessuna categoria
Trend RepositoryArticles and guides
Articles

gzip – Supporto per i file gzip¶

Il Novembre 24, 2021 da admin

Codice sorgente: Lib/gzip.py

Questo modulo fornisce una semplice interfaccia per comprimere e decomprimere file proprio come farebbero i programmi GNU gzip e gunzip.

La compressione dei dati è fornita dal modulo zlib.

Il modulo gzip fornisce la classe GzipFile, così come le funzioni di convenienzaopen(), compress() e decompress().La classe GzipFile legge e scrive file in formato gzip, comprimendo o decomprimendo automaticamente i dati in modo che appaiano come un normale oggetto file.

Nota che altri formati di file che possono essere decompressi dai programmi gzip e gunzip, come quelli prodotti dacompress e pack, non sono supportati da questo modulo.

Il modulo definisce i seguenti elementi:

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

Apre un file compresso con gzip in modalità binaria o testo, restituendo un fileobject.

L’argomento filename può essere un nome di file reale (un oggetto str obytes), o un oggetto file esistente da cui leggere o su cui scrivere.

L’argomento mode può essere uno qualsiasi tra 'r', 'rb', 'a', 'ab','w', 'wb', 'x' o 'xb' per il modo binario, o 'rt','at', 'wt', o 'xt' per il modo testo. Il default è 'rb'.

L’argomento compresslevel è un intero da 0 a 9, come per il costruttore GzipFile.

Per il modo binario, questa funzione è equivalente al costruttore GzipFile: GzipFile(filename, mode, compresslevel). In questo caso, gli argomenti codifica, errori e newline non devono essere forniti.

Per il modo testo, viene creato un oggetto GzipFile, e avvolto in un’istanzaio.TextIOWrapper con la codifica specificata, il comportamento di gestione degli errori, e le terminazioni di riga.

Cambiato nella versione 3.3: Aggiunto il supporto per il nome del file che è un oggetto file, il supporto per la modalità testo, e gli argomenti di codifica, errori e newline.

Cambiato nella versione 3.4: Aggiunto il supporto per le modalità 'x', 'xb' e 'xt'.

Cambiato nella versione 3.6: Accetta un oggetto simile a un percorso.

eccezionegzip.BadGzipFile¶

Un’eccezione sollevata per file gzip non validi. Eredita OSError.EOFError e zlib.error possono anche essere sollevate per gzipfiles non validi.

Nuovo nella versione 3.8.

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

Costruttore della classe GzipFile, che simula la maggior parte dei metodi di un oggetto file, ad eccezione del metodo truncate(). Almeno uno tra fileobj e filename deve avere un valore non banale.

La nuova istanza della classe è basata su fileobj, che può essere un normale file, un oggettoio.BytesIO o qualsiasi altro oggetto che simula un file. È predefinito a None, nel qual caso filename viene aperto per fornire un oggetto file.

Quando fileobj non è None, l’argomento filename è usato solo per essere incluso nell’intestazione del file gzip, che può includere il nome originale del file non compresso. È predefinito al nome del fileobj, se distinguibile; altrimenti, è predefinito alla stringa vuota, e in questo caso il nome originale del file non è incluso nell’intestazione.

L’argomento mode può essere uno qualsiasi tra 'r', 'rb', 'a', 'ab', 'w','wb', 'x', o 'xb', a seconda che il file venga letto o scritto. Il default è il modo di fileobj se distinguibile; altrimenti, il default è 'rb'. Nelle future versioni di Python la modalità di fileobj non sarà usata. È meglio specificare sempre la modalità di scrittura.

Nota che il file viene sempre aperto in modalità binaria. Per aprire un file compresso in modalità testo, usa open() (o avvolgi il tuo GzipFile con unio.TextIOWrapper).

L’argomento compresslevel è un intero da 0 a 9 che controlla il livello di compressione; 1 è più veloce e produce la minore compressione, e 9 è più lento e produce la maggiore compressione. 0è nessuna compressione. Il valore predefinito è 9.

L’argomento mtime è un timestamp numerico opzionale da scrivere nel campo del tempo di ultima modifica nel flusso quando si comprime. Dovrebbe essere fornito solo in modalità di compressione. Se omesso o None, viene usato il tempo corrente. Vedere l’attributo mtime per maggiori dettagli.

Chiamando il metodo close() di un oggetto GzipFile non si chiude il fileobj, poiché si potrebbe voler aggiungere altro materiale dopo i dati compressi. Questo permette anche di passare un oggetto io.BytesIO aperto per la scrittura come fileobj, e recuperare il buffer di memoria risultante usando il metodo getvalue() dell’oggettoio.BytesIO.

GzipFile supporta l’interfaccia io.BufferedIOBase, inclusa l’iterazione e la dichiarazione with. Solo il metodotruncate() non è implementato.

GzipFile fornisce anche il seguente metodo e attributo:

peek(n)¶

Leggi n byte non compressi senza avanzare la posizione del file.Al massimo viene fatta una singola lettura sul flusso compresso per soddisfare la chiamata. Il numero di byte restituito può essere maggiore o minore di quello richiesto.

Nota

Mentre la chiamata a peek() non cambia la posizione del file di GzipFile, può cambiare la posizione dell’oggettofile sottostante (ad esempio se il GzipFile è stato costruito con il parametrofileobj).

Nuovo nella versione 3.2.

mtime¶

Quando si decomprime, il valore del campo dell’ultimo tempo di modifica nell’intestazione più recente può essere letto da questo attributo, come un intero. Il valore iniziale prima di leggere qualsiasi intestazione è None.

Tutti i flussi compressi gzip devono contenere questo campotimestamp. Alcuni programmi, come gunzip, fanno uso del timestamp. Il formato è lo stesso del valore di ritorno ditime.time() e dell’attributo st_mtime dell’oggetto restituito da os.stat().

Cambiato nella versione 3.1: è stato aggiunto il supporto per la dichiarazione with, insieme all’argomento del costruttore mtime.

Modificato nella versione 3.2: È stato aggiunto il supporto per i file non cercabili e con zero spazio.

Cambiato nella versione 3.3: Il metodo io.BufferedIOBase.read1() è ora implementato.

Cambiato nella versione 3.4: Aggiunto il supporto per i modi 'x' e 'xb'.

Cambiato nella versione 3.5: Aggiunto il supporto per la scrittura di oggetti arbitrarybytes-like.Il metodo read() ora accetta un argomento diNone.

Cambiato nella versione 3.6: Accetta un oggetto simile a un percorso.

Deprecato dalla versione 3.9: Aprire GzipFile per la scrittura senza specificare l’argomento mod è deprecato.

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

Comprime i dati, restituendo un oggetto bytes contenente i dati compressi. compresslevel e mtime hanno lo stesso significato del costruttore GzipFile sopra.

Nuovo nella versione 3.2.

Cambiato nella versione 3.8: Aggiunto il parametro mtime per un output riproducibile.

gzip.decompress(data)¶

Decomprime i dati, restituendo un oggetto bytes contenente i dati non compressi.

Nuovo nella versione 3.2.

Esempi di utilizzo¶

Esempio di come leggere un file compresso:

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

Esempio di come creare un file GZIP compresso:

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

Esempio di come comprimere GZIP un file esistente:

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)

Esempio di come comprimere GZIP una stringa binaria:

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

Vedi anche

Modulo zlib

Il modulo base di compressione dati necessario per supportare il formato file gzip.

Interfaccia a riga di comando¶

Il modulo gzip fornisce una semplice interfaccia a riga di comando per comprimere file ordecompressi.

Una volta eseguito il modulo gzip mantiene il/i file di input.

Cambiato nella versione 3.8: Aggiungere una nuova interfaccia della linea di comando con un utilizzo.Per default, quando si esegue la CLI, il livello di compressione predefinito è 6.

Opzioni della linea di comando¶

file¶

Se il file non è specificato, letto da sys.stdin.

--fast¶

Indica il metodo di compressione più veloce (meno compressione).

--best¶

Indica il metodo di compressione più lento (migliore compressione).

-d, --decompress¶

Decomprime il file dato.

-h, --help¶

Mostra il messaggio di aiuto.

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Archivi

  • Gennaio 2022
  • Dicembre 2021
  • Novembre 2021
  • Ottobre 2021
  • Settembre 2021

Meta

  • Accedi
  • Feed dei contenuti
  • Feed dei commenti
  • 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 | Tema da ThemeinProgress | Offerto orgogliosamente da WordPress