Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Sat, 05 Dec 2009 00:32:22 +0100, Pietro Battiston wrote: > def processa_linea(linea): >contenuto = estrai_contenuto(linea) >target = estrai_target(linea) > >if not target in self.diz: >self.diz[target] = [] > >self.diz[target].append(contenuto)

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Pietro Battiston
Il giorno ven, 04/12/2009 alle 23.49 +0100, Daniele Varrazzo ha scritto: > On Fri, 04 Dec 2009 20:16:05 +0100, Pietro Battiston > wrote: > > Il giorno ven, 04/12/2009 alle 19.33 +0100, Daniele Varrazzo ha scritto: > >> On Fri, 04 Dec 2009 19:05:12 +0100, Pietro Battiston > >> wrote: > >> > Il gio

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 04 Dec 2009 20:16:05 +0100, Pietro Battiston wrote: > Il giorno ven, 04/12/2009 alle 19.33 +0100, Daniele Varrazzo ha scritto: >> On Fri, 04 Dec 2009 19:05:12 +0100, Pietro Battiston >> wrote: >> > Il giorno ven, 04/12/2009 alle 13.39 +0100, Daniele Varrazzo ha >> > scritto: >> >> >> Io

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Pietro Battiston
Il giorno ven, 04/12/2009 alle 19.33 +0100, Daniele Varrazzo ha scritto: > On Fri, 04 Dec 2009 19:05:12 +0100, Pietro Battiston > wrote: > > Il giorno ven, 04/12/2009 alle 13.39 +0100, Daniele Varrazzo ha scritto: > > >> Io infatti avrei salvato tutti i dizionari dopo un numero prefissato di > >>

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 04 Dec 2009 19:05:12 +0100, Pietro Battiston wrote: > Il giorno ven, 04/12/2009 alle 13.39 +0100, Daniele Varrazzo ha scritto: >> Io infatti avrei salvato tutti i dizionari dopo un numero prefissato di >> righe lette dal file di input. In questo modo l'occupazione di memoria è >> controll

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Pietro Battiston
Il giorno ven, 04/12/2009 alle 13.39 +0100, Daniele Varrazzo ha scritto: > On Fri, 4 Dec 2009 13:32:56 +0100, Marco Beri wrote: > > 2009/12/4 Ernesto > > > >> > >> oltre a questo (che cmq porterà i maggiori benefici) potremmo > >> guadagnare > >>> qualcosa anche con: > >>> > >>> Il link che ho

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Ernesto
Gawk per Windows funziona discretamente bene. Mi ha processato file di 900 mega in pochi secondi liberandomi di molto lavoro manuale :) effettivamente sì, se il problema postato dall'op é per questioni di lavoro io utilizzerei gawk, senza perdere tempo a implementare qualcosa che esiste giá :-

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Giovanni Marco Dall'Olio
2009/12/4 Massimo Capanni : > Gawk per Windows funziona discretamente bene. > Mi ha processato file di 900 mega in pochi secondi liberandomi di > molto lavoro manuale :) effettivamente sì, se il problema postato dall'op é per questioni di lavoro io utilizzerei gawk, senza perdere tempo a implement

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Massimo Capanni
Gawk per Windows funziona discretamente bene. Mi ha processato file di 900 mega in pochi secondi liberandomi di molto lavoro manuale :) Il 04 dicembre 2009 12.59, Marco Beri ha scritto: > 2009/12/4 Giovanni Marco Dall'Olio > >> Scusami, ma io questo lo farei con gawk (sempre che tu sia su un si

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 14:56 +0100, Manlio Perillo wrote: > Nicola Larosa ha scritto: > > [...] > > David Mugnai wrote: > >> non stiamo reinventando quello che già fa il sistema operativo con il > >> file buffer? invece di scrivere logica addizionale che mima quello che > >> fa già il kernel potrem

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 15:08 +0100, Daniele Varrazzo wrote: [snip] > No, non stiamo reinventando i buffer: li stiamo usando meglio. hmm, più che meglio forse in maniera diversa (e magari più opportuna a seconda del problema) > > 24 è un limite basso, ma se il numero di file potenzialmente da scriv

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 04 Dec 2009 14:38:44 +0100, Nicola Larosa wrote: >> Daniele Varrazzo wrote: >>> Io infatti avrei salvato tutti i dizionari dopo un numero prefissato >>> di righe lette dal file di input. In questo modo l'occupazione di >>> memoria è controllata e le prestazioni credo siano in linea (qualch

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Manlio Perillo
Manlio Perillo ha scritto: > Nicola Larosa ha scritto: >> [...] >> David Mugnai wrote: Ah, scusa, ho riposto a te invece che a David. Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Manlio Perillo
Nicola Larosa ha scritto: > [...] > David Mugnai wrote: >> non stiamo reinventando quello che già fa il sistema operativo con il >> file buffer? invece di scrivere logica addizionale che mima quello che >> fa già il kernel potremmo provare ad aprire i file con bufsize=10M :) > Con quello istruis

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Nicola Larosa
> Daniele Varrazzo wrote: >> Io infatti avrei salvato tutti i dizionari dopo un numero prefissato >> di righe lette dal file di input. In questo modo l'occupazione di >> memoria è controllata e le prestazioni credo siano in linea (qualche >> file potrebbe avere poche righe, ma se su 1000 file apert

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 13:12 +0100, Ernesto wrote: > > > > > puoi aumentare il numero di file aperti contemporanemante, su che os > > stai lavorando? > > > > > > Su OS X 10.5. quindi uno unix based, ci sarà sicuramente un comando per aumentare il numero permesso di file aperti contemporaneamen

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 13:39 +0100, Daniele Varrazzo wrote: > On Fri, 4 Dec 2009 13:32:56 +0100, Marco Beri wrote: [snip] > > Ok, attento in uscita dal loop: devi scrivere le ultime righe rimaste > nel > > dizionario. > > > > E ricordati di avere un limite massimo di righe tale da gestire anche la

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 13:10 +0100, Daniele Varrazzo wrote: > On Fri, 04 Dec 2009 12:59:52 +0100, David Mugnai wrote: > > > 3) se le linee nel file hanno lunghezza fissa non usare il for ma andare > > di f.read(qualchekb) > > file.__iter__ fa questo dietro le quinte. Infatti se vuoi davvero crear

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Marco Beri
2009/12/4 Daniele Varrazzo Io infatti avrei salvato tutti i dizionari dopo un numero prefissato di > righe lette dal file di input. In questo modo l'occupazione di memoria è > controllata e le prestazioni credo siano in linea (qualche file potrebbe > avere poche righe, ma se su 1000 file aperti s

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 4 Dec 2009 13:32:56 +0100, Marco Beri wrote: > 2009/12/4 Ernesto > >> >> oltre a questo (che cmq porterà i maggiori benefici) potremmo >> guadagnare >>> qualcosa anche con: >>> >>> Il link che ho postato usa un approccio diverso. Usa delle liste in >>> memoria e scrive solo quando ha r

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Marco Beri
2009/12/4 Ernesto > > oltre a questo (che cmq porterà i maggiori benefici) potremmo guadagnare >> qualcosa anche con: >> >> Il link che ho postato usa un approccio diverso. Usa delle liste in >> memoria e scrive solo quando ha raggiunto una certa soglia. >> >> Solo due file aperti al massimo ed

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Ernesto
> oltre a questo (che cmq porterà i maggiori benefici) potremmo > guadagnare > qualcosa anche con: > > Il link che ho postato usa un approccio diverso. Usa delle liste in > memoria e scrive solo quando ha raggiunto una certa soglia. > > Solo due file aperti al massimo ed esecuzione molto veloc

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 4 Dec 2009 13:02:23 +0100, Marco Beri wrote: > 2009/12/4 David Mugnai > Il link che ho postato usa un approccio diverso. Usa delle liste in memoria > e scrive solo quando ha raggiunto una certa soglia. +1 -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com ___

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Ernesto
puoi aumentare il numero di file aperti contemporanemante, su che os stai lavorando? Su OS X 10.5.___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 04 Dec 2009 12:59:52 +0100, David Mugnai wrote: > 3) se le linee nel file hanno lunghezza fissa non usare il for ma andare > di f.read(qualchekb) file.__iter__ fa questo dietro le quinte. Infatti se vuoi davvero creare un programma filtro in Python devi non solo usare "python -u", ma dev

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Marco Beri
2009/12/4 David Mugnai oltre a questo (che cmq porterà i maggiori benefici) potremmo guadagnare > qualcosa anche con: > Il link che ho postato usa un approccio diverso. Usa delle liste in memoria e scrive solo quando ha raggiunto una certa soglia. Solo due file aperti al massimo ed esecuzione m

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 12:49 +0100, Ernesto wrote: > > > > > Perchè apri e chiudi i file ad ogni riga? Ogni volta gli fai > > flushare il > > buffer. Lasciali aperti: > > > > > > Ho provato a lasciarli aperti ma ho ottenuto un errore che mi indicava > che avevo più di 24 file aperti. > In realt

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione David Mugnai
On Fri, 2009-12-04 at 12:40 +0100, Daniele Varrazzo wrote: > On Fri, 4 Dec 2009 12:34:15 +0100, Ernesto 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

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Marco Beri
2009/12/4 Giovanni Marco Dall'Olio Scusami, ma io questo lo farei con gawk (sempre che tu sia su un sistema > unix) > > $: gawk '{print $0 > "output_"$3".txt"}' input.txt > > Per esperienza, i tool unix sono molto piu' veloci di quanto tu possa > fare in python (beh, sono scritti in C o C++) > N

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Marco Beri
2009/12/4 Ernesto > Perchè apri e chiudi i file ad ogni riga? Ogni volta gli fai flushare il > buffer. Lasciali aperti: > > Ho provato a lasciarli aperti ma ho ottenuto un errore che mi indicava che > avevo più di 24 file aperti. > In realtà i file di output che mi aspetto sono più di 1000. > Wi

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Giovanni Marco Dall'Olio
2009/12/4 Ernesto : > 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() > Scusami, ma io questo lo farei con gawk (sempre che tu sia su un sistema unix) $: gawk '{print $0 > "outpu

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Ivan Giuliani
On Fri, Dec 4, 2009 at 12:40 PM, Daniele Varrazzo wrote: > On Fri, 4 Dec 2009 12:34:15 +0100, Ernesto 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.writ

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Ernesto
Perchè apri e chiudi i file ad ogni riga? Ogni volta gli fai flushare il buffer. Lasciali aperti: Ho provato a lasciarli aperti ma ho ottenuto un errore che mi indicava che avevo più di 24 file aperti. In realtà i file di output che mi aspetto sono più di 1000. Ernesto ___

Re: [Python] split di file di grandi dimensioni

2009-12-04 Per discussione Daniele Varrazzo
On Fri, 4 Dec 2009 12:34:15 +0100, Ernesto 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 15G