Tengo el siguiente código, que modifica cada línea del archivo test.tex haciendo una sustitución de expresión regular.Escritura de Python al archivo usando stdout y 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),
El único problema es que sólo quiero la sustitución de aplicar a determinadas líneas en el archivo, y no hay manera de definir un patrón para seleccionar las líneas correctas. Entonces, quiero mostrar cada línea e indicar al usuario en la línea de comando, preguntándole si debo hacer la sustitución en la línea actual. Si el usuario ingresa "y", se realiza la sustitución. Si el usuario simplemente no ingresa nada, la sustitución es no hecha.
El problema, por supuesto, es que al usar el código inplace=1
he redirigido efectivamente stdout al archivo abierto. Por lo tanto, no hay forma de mostrar la salida (por ejemplo, preguntando si hacer la sustitución) a la línea de comando que no se envía al archivo.
¿Alguna idea?
Usar stderr ..... –
'fileinput' no es la herramienta adecuada para este trabajo. Solo use un patrón estándar de lectura-modificación-escritura –
@EliBendersky ¿me puede indicar un ejemplo de cómo hacer esa mención? Lo siento, soy muy nuevo en Python. – synaptik