[Python] split di file di grandi dimensioni

Ernesto e.picardi a unical.it
Ven 4 Dic 2009 12:34:15 CET


Ciao a tutti,

sono alle prese con uno script che deve effettuare lo split di un  
grosso file di circa 15 GB in un set di file di output.
Premetto che le righe presenti nel file devono essere indirizzate ad  
uno specifico file di output in accordo all'informazione che portano.
Mi spiego meglio. Ogni riga del file (testuale) contiene una serie di  
campi separati da tabulazione del tipo:

Nome\tinfo1\tA\tinfo2\n
Nome\tinfo1\tB\tinfo2\n
Nome\tinfo1\tC\tinfo2\n

Quello che devo fare è leggere il file riga per riga, considerare il  
valore terzo campo (A,B o C) e scrivere la riga ad uno specifico.

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?

Grazie,

Ernesto


Maggiori informazioni sulla lista Python