Если вы хотите заменить строки в одном и том же файле, вам, вероятно, придется прочитать его содержимое в локальной переменной, закрыть его и снова открыть для записи:
Я использую оператор with в этом примере, который закрывает файл после завершения блока with
- либо обычно, когда завершается выполнение последней команды, либо по исключению.
def inplace_change(filename, old_string, new_string):
# Safely read the input filename using 'with'
with open(filename) as f:
s = f.read()
if old_string not in s:
print('"{old_string}" not found in {filename}.'.format(**locals()))
return
# Safely write the changed content, if found in the file
with open(filename, 'w') as f:
s = f.read()
print('Changing "{old_string}" to "{new_string}" in {filename}'.format(**locals()))
s = s.replace(old_string, new_string)
f.write(s)
ЭтоСтоит отметить, что если бы имена файлов были другими, мы могли бы сделать это более элегантно с помощью одного оператора with
.