sto generando un certo numero di file CSV in modo dinamico, utilizzando il seguente codice:Come comprimere il file CSV direttamente nell'archivio zip?
import csv
fieldnames = ['foo1', 'foo2', 'foo3', 'foo4']
with open(csvfilepath, 'wb') as csvfile:
csvwrite = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
csvwrite.writeheader()
for row in data:
csvwrite.writerow(row)
Per risparmiare spazio, voglio comprimerli.
Utilizzando il modulo gzip
è abbastanza facile:
with gzip.open("foo.gz", "w") as csvfile :
csvwrite = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
csvwrite.writeheader()
for row in data:
csvwrite.writerow(row)
ma voglio che il file in formato 'zip'.
Ho provato il modulo zipfile
, ma non riesco a scrivere direttamente i file nell'archivio zip.
Invece, devo scrivere il file csv su disco, comprimerli in un file zip usando il seguente codice, e quindi eliminare il file csv.
with ZipFile(zipfilepath, 'w') as zipfile:
zipfile.write(csvfilepath, csvfilename, ZIP_DEFLATED)
Come posso scrivere un file CSV direttamente su un zip compresso simile a gzip?
@ J.F.Sebastian, grazie per il commento. aggiornato –