fileinput to moduł ze standardowej biblioteki Python, który obsługuje "to, co wygląda na aktualizację plików tekstowych w miejscu", a także różne inne powiązane zadania.
for line in fileinput.input(['thefile.txt'], inplace=True):
print(line.replace('old stuff', 'shiny new stuff'), end='')
Ten kod jest wszystko trzeba dla konkretnego zadania pan wspomniał - to dotyczy wszystkich kwestii (pisanie do innego pliku, usuwając starą Po zakończeniu i zastąpienie go nowym). Możesz również dodać kolejny parametr, taki jak backup='.bk'
, aby automatycznie zachować stary plik jako (w tym przypadku) thefile.txt.bk
, a także przetwarzać wiele plików, przejmować nazwy plików do przetworzenia z wiersza poleceń, itp., - przeczytaj dokumenty, są całkiem dobre (tak samo sugeruję moduł!).
Czy istnieje szczególny powód, dla którego nie chcesz przechodzić przez linie? To prawdopodobnie najlepsze rozwiązanie. – cobbal
Nie wiem ... Właśnie zastanawiałem się, czy jest lepszy sposób, jak sądzę. Zamiast tworzyć nowy plik i usuwać stary. –
tworząc nowy plik usuwasz konieczność przechowywania całego pliku w pamięci ... a jeśli robisz re.sub powinieneś upewnić się, że najpierw używasz re.compile (a następnie użyj metody sub instancji zwróconej) –