Дописать строки в начало файла на Python

Есть файл и строка. Необходимо добавить строку в начало файла. Нагуглил:

        with open(f'{fill_path}{n}.xml', 'rb+') as final:
        final.seek(0)
        final.writelines(['first_string'])

Но вот такой способ стирает часть строк начала файла.

Файлик хочу в формате xml, если что.

введите сюда описание изображения


Ответы (2 шт):

Автор решения: eri

Обычно вставка в середину или в начало файла не работает просто так.

Если файл маленький:

Прочитай его в переменную и перезапиши полностью.

with open(f'{fill_path}{n}.xml', 'rb') as final:
    data = final.read()
with open(f'{fill_path}{n}.xml', 'wb') as final:    
    final.writelines(['first_string'])
    final.write(data)

Если файл в память не помещается:

Нужно вставить нули размером с вставляемый кусок через функцию fallocate, которой нет в Python - установите пакет, видел пару реализаций https://github.com/trbs/fallocate, https://github.com/junhe/pyfallocate .

Потом делаем seek на нужное место и write.

На Windows не нахожу вставки такой.

→ Ссылка
Автор решения: Sergey

может как то так?

 with open('file.txt', 'r+') as file:
    content = file.read()  # Чтение
    file.seek(0, 0)  # Переход в начало файла
    file.write(new_line)  # Запись новой строки
    file.write(content)  # Запись старого содержимого
→ Ссылка