Работа с файлами (open, read, readlines) в Python для ЕГЭ/ОГЭ: шпаргалка и примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Все разборы Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Продвинутый синтаксис Время: 5-10 мин open with readlines strip

Работа с файлами (open, read, readlines)

Тема: Чтение текстовых файлов (.txt, .csv) без утечек памяти и кодировки
Файлы используются в Заданиях №9, №10, №17, №24, №26, №27 ЕГЭ. Правильное открытие через менеджер контекста `with` гарантирует надежность.

1. Конструкция with open()

Менеджер контекста with автоматически закрывает файл после выхода из блока, даже если возникла ошибка:

with open('17.txt', 'r', encoding='utf-8') as f:
    data = [int(line) for line in f if line.strip()]

Разновидности и прототипы задания на экзамене

1. Чтение всего файла целиком: f.read()
Идеально для Задания №24 (строки): s = open('24.txt').read().
2. Построчное чтение списка чисел: [int(x) for x in f]
Идеально для Задания №17: nums = [int(x) for x in open('17.txt')].
3. Чтение таблицы чисел (Задание 9, 26, 27)
Построчный сплит: [list(map(int, line.split())) for line in f].

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
Боевой шаблон решения на Python
# === Шпаргалка: Быстрое чтение любых файлов ЕГЭ ===

# 1. Задание 17 (одно число на строку):
# with open('17.txt') as f:
#     nums = [int(x) for x in f if x.strip()]

# 2. Задание 24 (одна гигантская строка):
# with open('24.txt') as f:
#     text = f.read().strip()

# 3. Задание 26 / 27 (первая строка — N, далее пары чисел):
# with open('26.txt') as f:
#     lines = f.readlines()
#     n, k = map(int, lines[0].split())
#     pairs = [list(map(int, line.split())) for line in lines[1:] if line.strip()]

Типичные ошибки

✕ Не так
# ❌ Ошибка: Забыть убрать символ перевода строки '\n' при чтении строк
lines = open('file.txt').readlines() # строки будут содержать '\n' на конце!
✓ Так
# ✅ Правильно: Применять .strip():
lines = [line.strip() for line in open('file.txt')]
ГРОБ

ЛОВУШКА: Пустая последняя строка в файле

Часто в конце файла есть пустая строка. int('') вызовет ValueError.

Как обойти
Всегда фильтруйте непустые строки: nums = [int(x) for x in f if x.strip()].

Лайфхаки на экзамене

  1. Вместо f.readlines() по файлу можно итерироваться напрямую: for line in f: — это экономит оперативную память.
Все разборы заданий Открыть в тренажере СмартКИМ