[Python] split di file di grandi dimensioni

Daniele Varrazzo piro a develer.com
Ven 4 Dic 2009 12:40:41 CET


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:

# NON TESTATO

files = {}
for c in "ABC:
    files[c] = open(c + ".txt","a")

f=open(infile)
for i in f:
    l=(i.strip()).split("\t")
    files[l[2]].write(i)

f.close()
for f in files.values():
    f.close()


-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python