Estoy tratando de reemplazar texto en un archivo de texto leyendo cada línea, probándola y escribiendo si es necesario actualizarla. NO QUIERO guardar como un archivo nuevo, ya que mi secuencia de comandos ya realiza una copia de seguridad de los archivos primero y opera en las copias de seguridad.cómo reemplazar (actualizar) el texto en un archivo línea por línea
Esto es lo que tengo hasta ahora ... tengo fpath de os.walk() y garantizo que el pathmatch var devuelve correctamente:
fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
for line in f.readlines():
if '<a href="' in line:
for test in filelist:
pathmatch = file_match(line, test)
if pathmatch is not None:
repstring = filelist[test] + pathmatch
print 'old line:', line
line = line.replace(test, repstring)
print 'new line:', line
f.write(line)
Pero lo que termina sucediendo es que solo me dan unas pocas líneas (actualizadas correctamente, fíjate, pero repetidas anteriormente en el archivo) corregidas. Creo que esto es un problema de alcance, un problema.
* También: me gustaría saber cómo reemplazar solo el texto en la primera instancia de la coincidencia, por ejemplo, no quiero hacer coincidir el texto de la pantalla, solo el href subyacente.
¿ha considerado simplemente poniendo 'sed' en su lugar? – Amber
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –
@Amber: De muchas maneras. Realmente quiero terminar esto y aprender más tarde. Ya casi termino con esto ... :) – jml