зачем 2 раза контекстный менеджер на один и тот же файл?
# Предупреждение, читать в память надо относительно не большой кусок файла, так как память не безгранична, но для файла 10Mb сгодится. В момент чтения все содержимое нового файла будет в памяти и мы не можем заранее знать сколько свободной памяти на устройстве в данный момент и это частая ошибка. Для небольших файлов это работает отлично.
with open(file, "rb+") as log_file:
# будущий размер файла
file_size = file_size_limit_bytes * 0.25
# переходим в файле на позицию будущего размера файла считая от конца файла
log_file.seek(file_size) .seek(file_size * -1, os.SEEK_END)
# читаем от этой позиции до конца файла
file_data = log_file.read()
# переходим в начало файла
log_file.seek(0)
# записываем новые данные
log_file.write(file_data)
# усекаем файл до размера нового файла
log_file.truncate(file_size)
Да, нужно будет поучить работу с файлами, спасибо :)