devo capire come scrivere output di file in un file compresso in Python, simile ai due-liner di seguito:pitone equivalente di output di file tubazioni a gzip in Perl usando un tubo
open ZIPPED, "| gzip -c > zipped.gz";
print ZIPPED "Hello world\n";
In Perl , questo usa Unix gzip per comprimere tutto ciò che si stampa nel filehandle ZIPPED nel file "zipped.gz".
so come usare "importazione gzip" per fare questo in Python come questo:
import gzip
zipped = gzip.open("zipped.gz", 'wb')
zipped.write("Hello world\n")
Tuttavia, che è estremamente lento. Secondo il profiler, l'utilizzo di tale metodo richiede il 90% del tempo di esecuzione poiché sto scrivendo 200 GB di dati non compressi su vari file di output. Sono consapevole che il file system potrebbe essere parte del problema qui, ma voglio escluderlo usando invece la compressione Unix/Linux. Questo è in parte perché ho sentito che la decompressione usando questo stesso modulo è altrettanto lenta.
Avete bisogno di farlo fare in puro Python, o potrebbe accontentarsi di una chiamata in una binario sul filesystem (in Python, utilizza il modulo sottoprocesso)? – ChristopheD
Preferisco non farlo in Python poiché i metodi Python sono troppo lenti. – bu11d0zer
Hai eseguito il programma gzip dalla shell su 200 GB di dati non compressi? Mi aspetto che ci vorrà un bel po 'di tempo per il wall-lock con il 90-100% di utilizzo della CPU - sulla mia scatola di Windows funziona circa 1 minuto per GB, mentre il modulo gzip di Python richiede circa 2 minuti per GB. – Dave