Для файла не слишком большого размера:
with open('./ampo.txt', 'rb+') as f:
x = f.read()
f.seek(0,0)
f.writelines(('EDF ', x.replace('\n','\nEDF ')))
f.truncate()
Обратите внимание, что в ТЕОРИИ, в ЭТОМ случае (контент дополнен), f.truncate()
может быть не очень необходимым. Поскольку оператор with должен корректно закрывать файл, то есть писать EOF (конец файла) в конце перед закрытием.
Это то, что я наблюдал на примерах.
Но я осторожен: я думаю, что в любом случае лучше поставить эту инструкцию. Поскольку, когда содержимое уменьшается, оператор with не записывает EOF для правильного закрытия файла, который находится ниже, чем предыдущий начальный EOF, поэтому в файле остаются завершающие начальные символы.
Так что, если оператор with не записывает EOF, когда содержимое уменьшается, зачем его писать, когда содержимое увеличивается?
Для большого файла, чтобы не помещать все содержимое файла в ОЗУ сразу:
import os
def addsomething(filepath, ss):
if filepath.rfind('.') > filepath.rfind(os.sep):
a,_,c = filepath.rpartition('.')
tempi = a + 'temp.' + c
else:
tempi = filepath + 'temp'
with open(filepath, 'rb') as f, open(tempi,'wb') as g:
g.writelines(ss + line for line in f)
os.remove(filepath)
os.rename(tempi,filepath)
addsomething('./ampo.txt','WZE')