[Python] split di file di grandi dimensioni

David Mugnai dvd a gnx.it
Ven 4 Dic 2009 12:59:52 CET


On Fri, 2009-12-04 at 12:40 +0100, Daniele Varrazzo wrote:
> On Fri, 4 Dec 2009 12:34:15 +0100, Ernesto <e.picardi a unical.it> wrote:
> 
> > Per ora il modo più semplice che ho trovato è:
> > 
> > import os
> > f=open(infile)
> > for i in f:
> > 	l=(i.strip()).split("\t")
> > 	out=open(l[2]+".txt","a")
> > 	out.write(i)
> > 	out.close()
> > f.close()
> > 
> > Lanciato su un file di 15GB il tempo necessario per completare il  
> > tutto è superiore ai 2 giorni.
> > C'è un modo per velocizzare il processo?
> 
> Perchè apri e chiudi i file ad ogni riga? Ogni volta gli fai flushare il
> buffer. Lasciali aperti:

oltre a questo (che cmq porterà i maggiori benefici) potremmo guadagnare
qualcosa anche con:

1) aprire il file da 15GB in modalità binaria (utile solo se siamo sotto
windows e forse anche sotto mac)
2) provare ad aumentare il buffer dei file (forse più utile quello in
scrittura?)
3) se le linee nel file hanno lunghezza fissa non usare il for ma andare
di f.read(qualchekb)

bye
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  197 bytes
Descrizione: This is a digitally signed message part
Url:         http://lists.python.it/pipermail/python/attachments/20091204/023b7fb8/attachment.pgp 


Maggiori informazioni sulla lista Python