v1.0.0

Python с нуля для ЕГЭ · Читаем данные из файла

Урок курсаPython 35 задачБесплатно

Читаем данные из файла

Научимся читать текстовый файл построчно, очищать переносы и преобразовывать данные осознанно.

Теория

Файл передаёт программе текстовые строки

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

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

with open("numbers.txt", encoding="utf-8") as source:    for line in source:        number = int(line.strip())        print(number)

Запись сохраняет результат после завершения программы

Режим w открывает файл для записи и заменяет прежнее содержимое. Метод write принимает строку, поэтому число сначала превращают в текст. Перевод строки добавляют явно — Python не дописывает его автоматически.

total = 17 with open("result.txt", "w", encoding="utf-8") as target:    target.write(f"Сумма: {total}\n")

Для списка структурированных записей позже используем JSON, но принцип останется тем же: программа явно выбирает момент, когда текущее состояние нужно сохранить.

Путь одной строки

Полезно проследить одну строку через все состояния: исходный текст с переводом строки, очищенный текст и числовое значение. Ошибка на каждом этапе имеет разную причину.

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

Разберём на примере
Проследим строку с числом
Из файла получено значение, содержащее символы 1, 2 и перевод строки.
  1. strip удаляет перевод строки и оставляет текст 12.
  2. int проверяет цифровую запись и создаёт число 12.
  3. Только после этого значение безопасно участвует в арифметике.
Проверьте себя
Почему полезно отдельно видеть исходную строку, очищенный текст и число?
Так можно точно определить этап ошибки: чтение, очистку формата или преобразование типа.

Цифры в файле ещё не являются числами

Сложение прочитанных строк соединяет текст: строки 2 и 5 могут дать 25 вместо 7. Внешний вид значения не определяет его тип.

Как проверить обработку файла

Создайте крошечный файл из двух-трёх строк, заранее вычислите ожидаемый результат и проследите преобразование одной строки. Затем добавьте граничный пример, например пробелы вокруг числа.

Как действовать
Работаем с данными по этапам
  1. Зафиксируйте формат. Что означает одна строка и какой разделитель используется?
  2. Очистите текст. Удалите только служебные символы по краям.
  3. Преобразуйте тип. Сделайте это до арифметики и обработки.
  4. Сверьте маленький файл. Результат должен совпасть с ручным вычислением.

Практика

Очистите прочитанную строку

Из файла прочитана строка "12\n". Что останется после .strip()?

Подсказка
`strip` удаляет перевод строки по краям.
Решение

Символ перевода строки удаляется, а цифры остаются. Результат — строка `12`.

Удалите пробелы по краям

Что получится после " 7\n".strip()?

Подсказка
Метод удаляет пробел и перевод строки с краёв.
Решение

Оба служебных символа по краям исчезают, остаётся строка `7`.

Преобразуйте данные

Чему равно int("15") после чтения числа из файла?

Подсказка
Строка содержит допустимую цифровую запись целого числа.
Решение

Функция int преобразует строку `15` в целое число 15.

Сложите строки файла

В файле три строки: 2, 5, 3. Программа преобразует каждую в int и складывает. Каков итог?

Подсказка
Каждая строка становится числом.
Решение

После преобразования складываются 2 + 5 + 3, получается 10.

Запишите и прочитайте результат

Запустите код из раздела о записи с total = 17, затем прочитайте result.txt через read().strip(). Какую строку вы получите?

Подсказка
В файл записывается подпись, число и перевод строки; `strip()` убирает перевод строки при чтении.
Решение

После записи и удаления служебного перевода строки содержимое равно `Сумма: 17`.

Итог

Теперь вы можете прочитать небольшой текстовый файл, превратить строки в данные и записать вычисленный результат.

Создайте файл из трёх чисел, предскажите сумму вручную и проверьте программу, которая читает его через with.

Прогресс

0 / 5
x

Вы ещё не решали задания