Ich habe eine Textdatei foo.txt einen Text in einer Datei Zeile zu aktualisieren, die wie folgt aussieht:, wie durch die Linie
first 01
start
some thing 01
and more 101
i dont care
end
i dont care
final 01
ich all mit zwischen den Zeilen ersetzen Start und Ende im gleichen foo.txt wie so:
first 01
start
some thing 10
and more 110
i dont care
end
i dont care
final 01
Der Code, den ich bisher haben wie folgt aussieht:
import re
from tempfile import mkstemp
from shutil import move
from os import remove, close
def replace(foo.txt):
searchStart = re.compile("^start")
searchEnd = re.compile("^end")
pattern = "01"
subst = "10"
fh, abs_path = mkstemp()
search = 0
with open(abs_path,'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
if searchEnd.search(line):
search = 0
elif searchStart.search(line):
search = 1
if search == 1:
new_file.write(re.sub(pattern,subst,line))
else:
new_file.write(line)
close(fh)
remove(foo.txt)
move(abs_path, foo.txt)
Es tut, was ich will, aber ich wollte wissen, ob es für das Schreiben des Codes eine andere effiziente Art und Weise ist. Ich bin von einem eingebetteten Hintergrund und so verwendete ich Flag wie Suche in meinem Code.
Danke!
Danke für den Vorschlag. aber ich möchte nicht die gesamte Datei ersetzen, ich möchte die Linie nur zwischen Anfang und Ende ersetzen –