Ho il seguente codice, che modifica ogni riga del file test.tex effettuando una sostituzione di espressioni regolari.Python scrive su file usando stdout e fileinput
import re
import fileinput
regex=re.compile(r'^([^&]*)(&)([^&]*)(&)([^&]*)')
for line in fileinput.input('test.tex',inplace=1):
print regex.sub(r'\3\2\1\4\5',line),
L'unico problema è che io voglio solo la sostituzione di applicare ad alcune righe nel file, e non c'è modo di definire un modello per selezionare le linee corrette. Quindi, voglio visualizzare ogni riga e chiedere all'utente nella riga di comando, chiedendo se effettuare la sostituzione sulla linea corrente. Se l'utente inserisce "y", viene effettuata la sostituzione. Se l'utente non inserisce semplicemente nulla, la sostituzione è non effettuata.
Il problema, ovviamente, è che utilizzando il codice inplace=1
ho effettivamente reindirizzato lo stdout al file aperto. Quindi non c'è modo di mostrare l'output (ad esempio chiedendo se effettuare la sostituzione) alla riga di comando che non viene inviata al file.
Qualche idea?
Usa stderr ..... –
'fileinput' non è lo strumento giusto per questo lavoro. Basta usare un modello standard di lettura-modifica-scrittura –
@EliBendersky puoi indicarmi un esempio di come si parla? Scusa, sono molto nuovo in Python. – synaptik