Теория
Файл передаёт программе текстовые строки
При чтении текстового файла программа получает строки, даже если внутри записаны цифры. Перевод строки обычно остаётся в прочитанном значении, поэтому данные сначала очищают и только затем преобразуют.
Контекстный менеджер 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, но принцип останется тем же: программа явно выбирает момент, когда текущее состояние нужно сохранить.
Путь одной строки
Полезно проследить одну строку через все состояния: исходный текст с переводом строки, очищенный текст и числовое значение. Ошибка на каждом этапе имеет разную причину.
Преобразование лучше держать рядом с чтением или в отдельной функции подготовки данных, а дальнейшие вычисления выполнять уже с числами.
- strip удаляет перевод строки и оставляет текст 12.
- int проверяет цифровую запись и создаёт число 12.
- Только после этого значение безопасно участвует в арифметике.
Цифры в файле ещё не являются числами
Сложение прочитанных строк соединяет текст: строки 2 и 5 могут дать 25 вместо 7. Внешний вид значения не определяет его тип.
Как проверить обработку файла
Создайте крошечный файл из двух-трёх строк, заранее вычислите ожидаемый результат и проследите преобразование одной строки. Затем добавьте граничный пример, например пробелы вокруг числа.
- Зафиксируйте формат. Что означает одна строка и какой разделитель используется?
- Очистите текст. Удалите только служебные символы по краям.
- Преобразуйте тип. Сделайте это до арифметики и обработки.
- Сверьте маленький файл. Результат должен совпасть с ручным вычислением.
Практика
Очистите прочитанную строку
Символ перевода строки удаляется, а цифры остаются. Результат — строка `12`.
Удалите пробелы по краям
Оба служебных символа по краям исчезают, остаётся строка `7`.
Преобразуйте данные
Функция int преобразует строку `15` в целое число 15.
Сложите строки файла
После преобразования складываются 2 + 5 + 3, получается 10.
Запишите и прочитайте результат
После записи и удаления служебного перевода строки содержимое равно `Сумма: 17`.
Итог
Теперь вы можете прочитать небольшой текстовый файл, превратить строки в данные и записать вычисленный результат.
Создайте файл из трёх чисел, предскажите сумму вручную и проверьте программу, которая читает его через with.
Прогресс
0 / 5Вы ещё не решали задания