[Python] split di file di grandi dimensioni
Ivan Giuliani
giuliani.v a gmail.com
Ven 4 Dic 2009 12:43:30 CET
On Fri, Dec 4, 2009 at 12:40 PM, Daniele Varrazzo <piro a develer.com> 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:
>
> # 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
Maggiori informazioni sulla lista
Python