Статья

Python: работа с файлами

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

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

Что такое работа с файлами в Python

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

Главный инструмент для работы с файлами — функция open(). Она получает имя файла и режим работы. После открытия Python возвращает файловый объект, через который можно читать или изменять данные.

file = open("notes.txt", "r")
\( text = file.read() \)
file.close()

Здесь файл открывается для чтения, всё содержимое помещается в переменную text, а затем файл закрывается. Закрывать файл важно: операционная система освобождает ресурсы, а записанные данные точно сохраняются.

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

Режимы открытия и кодировка

Второй аргумент функции open() определяет, что программа собирается делать с файлом. Режим "r" предназначен для чтения, "w" — для полной перезаписи, "a" — для добавления текста в конец. Если файл с таким именем не найден в режиме чтения, Python сообщит об ошибке.

РежимНазначениеВажная особенность
rЧтениеФайл должен существовать
wЗаписьСтарое содержимое стирается
aДобавлениеНовый текст попадает в конец
xСозданиеОшибка, если файл уже есть

Для русскоязычного текста почти всегда указывай кодировку utf-8. Это снижает риск появления нечитаемых символов на другом компьютере.

with open("diary.txt", "r", encoding="utf-8") as file:
\( text = file.read() \)

Имя файла без пути означает, что Python ищет его в текущей рабочей папке. Если файл лежит в другой папке, нужно указать путь. Следи за регистром букв: Data.txt и data.txt могут считаться разными файлами.

Чтение содержимого файла

У файлового объекта есть несколько способов чтения. Метод read() возвращает весь текст одной строкой. Это удобно для небольших файлов, но для большого журнала программа может занять много памяти.

with open("story.txt", "r", encoding="utf-8") as file:
\( all_text = file.read() \)

Метод readline() читает одну строку, а readlines() возвращает список строк. Часто удобнее пройти по файлу циклом: Python будет брать строки по очереди.

with open("scores.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

Метод strip() убирает пробелы и символ перевода строки по краям. Это особенно важно, когда строку нужно превратить в число. Например, int(line.strip()) преобразует текст "42\n" в число 42.

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

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

Запись и добавление текста

Режим "w" создаёт файл, если его ещё нет, но стирает прежнее содержимое, если файл уже существует. Поэтому используй его только тогда, когда действительно хочешь записать данные заново.

with open("result.txt", "w", encoding="utf-8") as file:
    file.write("Первый результат\n")
    file.write("Второй результат\n")

Метод write() записывает строку и возвращает количество записанных символов. Перевод строки нужно добавлять самостоятельно с помощью специального обозначения \n. В HTML-статье это обозначение остаётся частью Python-кода: оно означает переход на новую строку.

Если нужно сохранить старую информацию и дописать новую, выбирай режим "a".

with open("log.txt", "a", encoding="utf-8") as file:
    file.write("Программа запущена\n")

Для нескольких строк можно применить writelines(), но помни: этот метод сам не добавляет переводы строк. Их нужно включить в элементы списка заранее.

lines = ["яблоко\n", "груша\n", "слива\n"]
with open("fruits.txt", "w", encoding="utf-8") as file:
    file.writelines(lines)

Разобранный пример и типичные ошибки

Представим, что в файле numbers.txt записаны числа по одному в строке. Нужно найти их сумму и сохранить ответ в другой файл. Решение строится по шагам: открыть исходный файл, прочитать строки, удалить лишние символы, превратить каждую строку в число, сложить значения и записать результат.

\( total = 0 \)
with open("numbers.txt", "r", encoding="utf-8") as source:
for line in source:
\( number = int(line.strip()) \)
\( total += number \)

with open("sum.txt", "w", encoding="utf-8") as result:
result.write(str(total))

Если в исходном файле стоят числа 7, 12 и 5, переменная total последовательно примет значения 7, 19 и 24. В файл sum.txt попадёт текст "24". Обрати внимание на str(total): метод write() принимает строку, поэтому число нужно преобразовать.

Ловушка

Режим "w" не добавляет данные, а очищает файл. Ещё одна частая ошибка — забыть strip() или попытаться передать число в write() без преобразования в строку.

Если Python сообщает о FileNotFoundError, проверь имя и путь. Если появляется ValueError, значит строка не похожа на целое число.

Что запомнить

Для безопасной работы используй конструкцию with open(...) и указывай encoding="utf-8". Режим "r" читает, "w" перезаписывает, "a" добавляет. Метод read() получает весь текст, цикл читает файл построчно, а write() сохраняет строки.

Всегда проверяй путь к файлу, очищай строки методом strip() и помни о преобразовании типов: текст превращается в число через int(), а число в текст — через str(). Такой порядок действий поможет уверенно решать задачи с журналами, оценками и наборами чисел.

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

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

Напиши несколько маленьких программ: прочитай файл, посчитай сумму чисел, добавь строку в журнал и сохрани результат в новый файл. После каждого решения проверь содержимое файлов вручную и объясни, чем отличаются режимы r, w и a.

Почему появляется FileNotFoundError?

Python не нашёл файл по указанному имени или пути. Проверь рабочую папку, расширение и регистр букв в имени.

Чем отличаются read() и цикл for?

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

Зачем нужна кодировка utf-8?

Она помогает корректно читать и записывать русские буквы и другие символы на разных компьютерах.

Проверь себя на реальных заданиях

После такого разбора решите 5–7 заданий подряд — и тема ваша. Тренажёр Просто Урок подберёт их автоматически и объяснит ошибки по шагам. Бесплатно.

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