У режимах '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, переданий на введення, є тим, що дозволяє переписати рядок на місці; наступні рядки потрібно переміщати вперед або назад, щоб відбулася операція inplace, але я не знаю механізму