Actualmente estoy usando esto:
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
Pero el problema es que el archivo antiguo es más grande que el nuevo. Así que termino con un archivo nuevo que tiene una parte del archivo anterior al final.
f.write(text)
despuésf.truncate()
?