В режимах 'a'
или 'a+'
любая запись выполняется в конце файла, даже если в текущий момент, когда запускается функция write()
, указатель файла не находится в конце файла:указатель перемещается в конец файла перед любой записью.Вы можете делать то, что хотите, двумя способами.
1-й способ , можно использовать, если нет проблем с загрузкой файла в память:
def line_prepender(filename, line):
with open(filename, 'r+') as f:
content = f.read()
f.seek(0, 0)
f.write(line.rstrip('\r\n') + '\n' + content)
2-й способ :
def line_pre_adder(filename, line_to_prepend):
f = fileinput.input(filename, inplace=1)
for xline in f:
if f.isfirstline():
print line_to_prepend.rstrip('\r\n') + '\n' + xline,
else:
print xline,
Я не знаю, как этот метод работает под капотом и можно ли его использовать для больших больших файлов.Переданный на вход аргумент 1 позволяет переписать строку на месте;Следующие строки должны быть перемещены вперед или назад, чтобы выполнялась операция на месте, но я не знаю механизм