[Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Ciao a tutti, vi posso dire con piacere che la mia piccola
applicazione web sta cominciando a prendere vita.
Ora apro una nuova discussione specifica per i file.
Sto leggendo la documentazione:
http://docs.python.org/library/stdtypes.html#bltin-file-objects
http://diveintopython.org/file_handling/file_objects.html
ma faccio fatica a trovare un modo semplice per fare quello che mi
serve. Mi spiego:

ho un file di configurazione che devo leggere, trovare una specifica
riga, verificare se su questa riga è presente un valore. Se non c'è,
lo devo appendere alla riga.
Partiamo da un esempio:


gruppo disney
...
...
membri pippo,pluto
...
...
---

Andiamo per step:

1) cerchiamo _solo_ la parola chiave 'membri'

f = open(file.txt,r)
for line in f.readlines()
if 'membri' in line: print line
f.close

questo funziona

2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
quella elaborata


f = open(file.txt,w)
for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
f.close

E' possibile fare qualcosa del genere mentre si scorre il file?
Come consigliare altrimenti di fare?

Successivamente dovrò inoltre poter rimuovere nomi dalla riga 'membri'.

Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Vitto
Ciao,
ti chiedo scusa se ti dico una cosa banale ma sono nuovo di python.
Di recente ho avuto anche io una esigenza simile in un file di
configurazione.
Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a patto
che il file abbia una determinata struttura.
Spero di averti aiutato.

Il giorno 15 aprile 2010 12.32, Valerio Pachera siri...@gmail.com ha
scritto:

 Ciao a tutti, vi posso dire con piacere che la mia piccola
 applicazione web sta cominciando a prendere vita.
 Ora apro una nuova discussione specifica per i file.
 Sto leggendo la documentazione:
 http://docs.python.org/library/stdtypes.html#bltin-file-objects
 http://diveintopython.org/file_handling/file_objects.html
 ma faccio fatica a trovare un modo semplice per fare quello che mi
 serve. Mi spiego:

 ho un file di configurazione che devo leggere, trovare una specifica
 riga, verificare se su questa riga è presente un valore. Se non c'è,
 lo devo appendere alla riga.
 Partiamo da un esempio:

 
 gruppo disney
 ...
 ...
 membri pippo,pluto
 ...
 ...
 ---

 Andiamo per step:

 1) cerchiamo _solo_ la parola chiave 'membri'

 f = open(file.txt,r)
 for line in f.readlines()
if 'membri' in line: print line
 f.close

 questo funziona

 2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
 quella elaborata


 f = open(file.txt,w)
 for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?
 Come consigliare altrimenti di fare?

 Successivamente dovrò inoltre poter rimuovere nomi dalla riga 'membri'.

 Grazie
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Il 15 aprile 2010 12.39, Vitto natha...@gmail.com ha scritto:
 Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a patto
 che il file abbia una determinata struttura.

Vado subito a vedere!
Grazie!

PS:
Avevo già addocchiato la funzione

string.replace(str, old, new[, maxreplace])¶
Return a copy of string str with all occurrences of substring old
replaced by new. If the optional argument maxreplace is given, the
first maxreplace occurrences are replaced.

E anche l'oggetto Template che possono tornare veramente utili.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Vitto
Se vuoi guardare ConfigParser ti consiglio questo link.
Veloce e semplice:
http://www.doughellmann.com/PyMOTW/ConfigParser/

Come ti dicevo richiede una struttura del file particolare per cui se hai
dei file di configurazione già in essere che non puoi modificare allora
direi che lo string.replace fa al caso tuo.

Non aggiungo altro.
Son già emozionato per aver mandato la mia prima risposta in lista e non
solo domande :-)


2010/4/15 Valerio Pachera siri...@gmail.com

 Il 15 aprile 2010 12.39, Vitto natha...@gmail.com ha scritto:
  Ti consiglio il modulo ConfigParser che fa proprio quello che chiedi a
 patto
  che il file abbia una determinata struttura.

 Vado subito a vedere!
 Grazie!

 PS:
 Avevo già addocchiato la funzione

 string.replace(str, old, new[, maxreplace])¶
Return a copy of string str with all occurrences of substring old
 replaced by new. If the optional argument maxreplace is given, the
 first maxreplace occurrences are replaced.

 E anche l'oggetto Template che possono tornare veramente utili.
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Pachera
Il 15 aprile 2010 12.51, Vitto natha...@gmail.com ha scritto:
 Come ti dicevo richiede una struttura del file particolare per cui se hai
 dei file di configurazione già in essere che non puoi modificare allora
 direi che lo string.replace fa al caso tuo.

Ho trovato anch'io un buon esempio
(http://effbot.org/librarybook/configparser.htm) ma, come hai
giustamente scritto, il mio file di configurazione ha una sintassi
diversa :(
Ad ogni modo posso prendere spunto da questo modulo e creare una
classe che fa al caso mio (tempo permettendo).
Il mio problema al momento consiste nel scrivere linee di testo in un
file già esistente.
Altrimenti devo caricare l'intero file in una variabile e cercare di
cavarmela con replace ma non mi sembra molto adeguato.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Marco Mariani
On 04/15/2010 12:39 PM, Vitto wrote:

 f = open(file.txt,w)
 for line in f.readlines()
if 'membri' in line:
nuova = line + 'hello world'
#rimuovi line
f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?



No, devi scrivere un file nuovo.


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trova e sostituisci

2010-04-15 Per discussione Valerio Turturici
Valerio Pachera ha scritto:
 Ciao a tutti, vi posso dire con piacere che la mia piccola
 applicazione web sta cominciando a prendere vita.
 Ora apro una nuova discussione specifica per i file.
 Sto leggendo la documentazione:
 http://docs.python.org/library/stdtypes.html#bltin-file-objects
 http://diveintopython.org/file_handling/file_objects.html
 ma faccio fatica a trovare un modo semplice per fare quello che mi
 serve. Mi spiego:

 ho un file di configurazione che devo leggere, trovare una specifica
 riga, verificare se su questa riga è presente un valore. Se non c'è,
 lo devo appendere alla riga.
 Partiamo da un esempio:

 
 gruppo disney
 ...
 ...
 membri pippo,pluto
 ...
 ...
 ---

 Andiamo per step:

 1) cerchiamo _solo_ la parola chiave 'membri'

 f = open(file.txt,r)
 for line in f.readlines()
 if 'membri' in line: print line
 f.close

 questo funziona

 2) Una volta individuata la riga vorrei rimuoverla e sostituirla con
 quella elaborata


 f = open(file.txt,w)
 for line in f.readlines()
 if 'membri' in line:
 nuova = line + 'hello world'
 #rimuovi line
 f.writeline(nuova)
 f.close

 E' possibile fare qualcosa del genere mentre si scorre il file?
 Come consigliare altrimenti di fare?
   
Devi creare un nuovo file su cui scrivere. Una cosa tipo:

out = open(file_out.txt, 'w')

for line in open(file.txt):
  if 'membri' in line:
nuovo = line + 'hello world\n'
out.write(nuovo)
  out.write(line)

out.close()


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python