On Fri, Dec 4, 2009 at 12:40 PM, Daniele Varrazzo <p...@develer.com> wrote: > On Fri, 4 Dec 2009 12:34:15 +0100, Ernesto <e.pica...@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()
Aggiungo che su file di queste dimensioni ti conviene fare buffered reading/writing. Se usi python 2.6 vedi TextIOWrapper (http://docs.python.org/library/io.html). -- (+39) 349 05 37 906 _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python