Войти Создать аккаунт

Файлы · 14 из 14

Только новое

Стас пишет сторожа: раз в минуту тот заглядывает в журнал и шлёт в чат то, что появилось с прошлого раза. Журнал весит несколько гигабайт, перечитывать его каждую минуту нельзя — сторож помнит, на каком байте остановился. Сервер может как раз дописывать строку, и недописанную отправлять рано. А ночью журнал ротируют, и файл вдруг становится короче, чем был.

Что сделать

Отдайте строки, появившиеся в журнале после запомненного места, и новое место — не перечитывая файл и не отдавая недописанное.

Что приходит

  • put — путь к журналу в UTF-8

  • smeshchenie — на каком байте остановились в прошлый раз; с самого начала — 0

Что вернуть

Пару (новые строки без переводов строки, новое смещение в байтах).

Допишите функцию novye_stroki в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

Пример

В журнале две законченные строки и начало третьей: "12:01 GET /\n12:02 GET /api\n12:03 GE". С нуля отдаются две строки, а новое смещение — 27, начало недописанной: в следующий раз чтение начнётся с неё.

Тот же пример кодом
Перед вызовом
with open("app.log", "w", encoding="utf-8", newline="") as f:
    f.write("12:01 GET /\n12:02 GET /api\n12:03 GE")
Вызов
novye_stroki("app.log", 0)
Вернуть
(['12:01 GET /', '12:02 GET /api'], 27)
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.