[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