Статья

Python: обработка файлов: разбор для ЕГЭ

3 сентября 2026~8 минут11 класс

Разберём «Python: обработка файлов» так, чтобы тема наконец встала на место: короткая теория, наглядный пример, алгоритм и ошибки, на которых теряют баллы. В конце — что запомнить и где закрепить на практике.

Зачем уметь работать с файлами на ЕГЭ по информатике

Многие выпускники уверенно пишут базовые алгоритмы, но теряют первичные баллы из-за банальных ошибок при чтении входных файлов. В этой статье мы разберём все способы обработки данных в Python, чтобы ты гарантированно справился с заданиями 17, 24, 26 и 27 на реальном экзамене.

Начиная с компьютерной формы ЕГЭ, практически каждая сложная задача требует извлечения данных из текстового документа. Экзаменационная система предоставляет файлы форматов TXT или CSV, содержащие от нескольких десятков чисел до миллионов строк и символов. Ручной перенос таких массивов невозможен: твоя программа должна быстро открыть файл, корректно распарсить значения и сохранить их в удобные структуры данных.

Базовая работа с файлами в Python строится вокруг встроенной функции open(). Чтобы не забывать закрывать файл после завершения работы и не вызывать утечек оперативной памяти, в стандарте ЕГЭ всегда используется менеджер контекста with.

with open("24.txt", "r", encoding="utf-8") as file:
\(     data = file.read() \)
# Файл закрывается автоматически при выходе из блока with

Режим "r" обозначает чтение (read). Если файл лежит в одной папке со скриптом, достаточно указать только его имя. Если ты хочешь сразу попрактиковаться в запуске типовых конструкций, открой бесплатный личный кабинет Просто Урок и начни с простых упражнений.

Четыре способа чтения данных: выбираем подходящий инструмент

В зависимости от условия задачи входной файл может содержать одну длинную строку символов, список чисел по одному в строке или таблицы с разделителями. Для каждого случая в Python предусмотрен оптимальный метод чтения.

Выбор неверного метода может привести к переполнению памяти или резкому замедлению программы, что критично в задачах 26 и 27. Ниже приведена сравнительная таблица основных способов чтения текстовых файлов в Python.

Метод Что возвращает Когда применять на ЕГЭ Нагрузка на память
file.read() Единая строка str Задание 24 (строки из сотен тысяч символов) Высокая (весь файл в ОЗУ)
file.readline() Одна строка str Чтение заголовков и параметров N, K Минимальная (одна строка)
file.readlines() Список строк list[str] Файлы среднего размера до 100 000 строк Средняя (весь список в ОЗУ)
for line in file: Итератор по строкам Задания 17, 26, 27 (большие массивы чисел) Минимальная (потоковая обработка)

Для потоковой построчной обработки больших файлов всегда предпочтительнее прямой цикл for line in file. Он считывает строки поочередно, не загружая гигантский массив в память компьютера одновременно.

Преобразование и очистка строк: от текста к числам

При чтении данных из файла каждая строка содержит невидимый служебный символ перевода строки \n. Если попытаться преобразовать грязную строку или разделить её без предварительной подготовки, в вычислениях возникнут ошибки.

Для удаления пробельных и служебных символов по краям строки применяется метод .strip(). Если в строке записано несколько чисел через пробел, используется метод .split(), который разбивает строку на список подстрок.

Совет репетитора

Всегда используй генераторы списков для быстрого приведения типов. Конструкция numbers = [int(x) for x in file] заменяет пять строк обычного кода и сразу создаёт готовый список целых чисел для задачи 17.

Рассмотрим стандартные шаблоны подготовки данных перед решением алгоритмической части:

# 1. Чтение файла с одним числом в каждой строке (Задание 17)
with open("17.txt") as f:
\(     a = [int(line) for line in f] \)

# 2. Чтение первой строки с параметрами N, S и остальных данных (Задание 26)
with open("26.txt") as f:
\(     n, s = map(int, f.readline().split()) \)
\(     items = [int(line) for line in f] \)

# 3. Чтение пар чисел в каждой строке (Задание 27)
with open("27.txt") as f:
\(     pairs = [list(map(int, line.split())) for line in f] \)

Разобраться с генераторами и закрепить навык парсинга входных строк можно на платформе Просто Урок в интерактивном тренажёре.

Пошаговый разбор задания 24: поиск самой длинной цепочки

Рассмотрим классическую задачу 24 из ЕГЭ. Условие: текстовый файл состоит из заглавных латинских букв A, B, C, D, E. Определи максимальное количество идущих подряд символов, среди которых нет двух соседних букв A.

Алгоритм решения строится по следующим шагам:

Шаг 1. Считываем всё содержимое файла в одну строковую переменную с помощью read().
Шаг 2. Инициализируем переменные cur_len = 1 (текущая длина цепочки) и max_len = 1 (максимальная найденная длина).
Шаг 3. В цикле проходим по строке от второго символа до конца, сравнивая текущий символ с предыдущим.
Шаг 4. Если пара не образует запрещенную комбинацию "AA", увеличиваем cur_len на 1 и обновляем max_len.
Шаг 5. Если встретилась пара "AA", сбрасываем cur_len до 1.

with open("24.txt") as file:
\(     s = file.read().strip() \)

\( max_len = 1 \)
\( cur_len = 1 \)

for i in range(1, len(s)):
    if not (s[i] == "A" and s[i - 1] == "A"):
\(         cur_len += 1 \)
        if cur_len > max_len:
\(             max_len = cur_len \)
    else:
\(         cur_len = 1 \)

print("Ответ:", max_len)

Этот линейный алгоритм работает за время O(N), где N — количество символов в файле, и выполняется меньше чем за 0.2 секунды даже для строк из миллиона элементов.

Типичные ловушки при обработке файлов и как их обойти

На экзамене волнение часто приводит к досадным техническим сбоям. Большинство ошибок при работе с файлами типичны и легко устраняются правильной привычкой написания кода.

Ловушка

Ошибка FileNotFoundError возникает, если файл сохранён не в той же папке, где лежит файл программы .py, или если в проводнике Windows скрыты расширения (и файл называется 24.txt.txt). Всегда сохраняй скрипт и входной файл в одну общую директорию.

Вторая частая ошибка — повторное чтение уже исчерпанного файла. Когда ты считываешь файл циклом или методом read(), внутренний указатель перемещается в самый конец. Если вызвать f.read() второй раз, вернётся пустая строка. Если необходимо пройти по данным повторно, сохрани результат первого чтения в список.

Третья проблема — попытка применить int() к пустой строке в конце файла. Символ переноса строки на последней позиции часто создает пустую строку при использовании split("\n"). Используй конструктор [int(x) for x in f.read().split()], так как метод split() без аргументов автоматически игнорирует любые последовательности пробелов и переносов.

Потренироваться в поиске таких скрытых багов можно через практические задания Просто Урок.

Что запомнить для экзамена

Для успешного решения заданий с файлами на ЕГЭ по информатике держи в памяти ключевые правила:

1. Открывай файлы только через контекстный менеджер with open("имя_файла") as f:, чтобы не терять дескрипторы.
2. Для 24 задания с единой строкой применяй f.read().strip().
3. Для 17, 26 и 27 заданий используй списочные включения [int(x) for x in f] или map() для мгновенного парсинга в числа.
4. Если в строке записано несколько чисел через пробел, разбивай её с помощью line.split().
5. Помни об указателе чтения: прочитанный файл нельзя прочитать заново без его повторного открытия или метода f.seek(0).

Сделай следующий шаг прямо сейчас: зарегистрируйся в личном кабинете и реши 5 тренировочных заданий на обработку файлов, чтобы закрепить материал на реальной практике.

Частые вопросы

Нужно ли закрывать файл через f.close(), если используешь with?

Нет, конструкция with open() автоматически закрывает файл при выходе из блока, даже если внутри произошла ошибка.

Что делать, если Python выдает FileNotFoundError?

Убедись, что файл со скриптом и файл с данными сохранены в одной папке, а в названии файла нет двойного расширения вроде data.txt.txt.

Чем отличается f.readline() от f.readlines()?

Метод readline() считывает только одну текущую строку, а readlines() загружает сразу все строки файла в виде списка.

Как закрепить тему после разбора?

Перейди в бесплатный личный кабинет Просто Урок и реши тематическую подборку задач из банка ЕГЭ с автоматической проверкой ответов.

Закрепить тему на практике

Теория без практики забывается за неделю. В личном кабинете Просто Урок — задания именно по этой теме с проверкой каждого шага. Регистрация бесплатная.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.