fileinput - это модуль из стандартной библиотеки Python, который поддерживает «то, что выглядит как обновление текстовых файлов на месте», а также различные другие связанные задачи.
for line in fileinput.input(['thefile.txt'], inplace=True):
print(line.replace('old stuff', 'shiny new stuff'), end='')
Этот код все , необходимый для выполнения конкретной задачи, которую вы упомянули - он решает все проблемы (запись в другой файл, удаление старого по завершении и замена его новым. ). Вы также можете добавить еще один параметр, например backup='.bk'
, чтобы автоматически сохранить старый файл как (в данном случае) thefile.txt.bk
, а также обработать несколько файлов, взять имена файлов для обработки из командной строки и т. Д. И т. Д. - do прочитайте документы, они довольно хороши (как и модуль, который я предлагаю! -).