Próbuję zastąpić tekst w pliku tekstowym, czytając każdą linię, testując ją, a następnie wpisując, czy ma być aktualizowany. NIE chcę zapisywać jako nowego pliku, ponieważ mój skrypt najpierw tworzy kopie zapasowe plików i działa na kopiach zapasowych.Jak zamienić (zaktualizować) tekst w linii pliku po linii
Oto co mam tak daleko ... I dostać fpath z os.walk() i gwarantuję, że pathmatch var zwraca poprawnie:
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)
Ale co kończy się dzieje jest to, że tylko dostać kilka wierszy (zaktualizowano poprawnie, pamiętaj, ale powtórzono z wcześniejszych w pliku) poprawiono. Myślę, że to kwestia określania zakresu, afaict.
* Chciałbym również wiedzieć, jak zastąpić tekst tylko w pierwszej instancji meczu, np. Nie chcę dopasować tekstu wyświetlanego, tylko ukrytego href.
Czy bierzesz pod uwagę po prostu za pomocą 'sed' zamiast? – Amber
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –
@Amber: In ways. Naprawdę chcę to zakończyć i nauczyć się sed później. Już prawie skończyłem z tym ... :) – jml