L2 Открытый урок · Новичок
L2.5. Python II: файлы, ошибки, JSON
Чтение и запись файлов с кодировкой, обработка исключений, JSON как язык обмена данными и модули. Пять задач с JSON.
- Объём
- 5 уроков · 14 часов
- Компетенции
- PROG-01·A, PROG-03·F
Файлы
import pathlib
text = pathlib.Path("note.txt").read_text(encoding="utf-8") # всегда указывайте кодировку
pathlib.Path("out.txt").write_text(text.upper(), encoding="utf-8")
Ошибки — это нормально, если их обработать
try:
text = pathlib.Path("note.txt").read_text(encoding="utf-8")
except FileNotFoundError:
print("файла нет — проверьте путь")
Ловите конкретные исключения, которые ожидаете. except: без типа прячет все ошибки, включая ваши собственные опечатки.
JSON — язык обмена данными
JSON — текстовый формат: объекты {"ключ": значение}, списки [...], строки, числа, true/false/null. Так общаются почти все API и так модели отдают структурированные ответы.
import json
order = {"id": 1, "amount": 1490, "status": "paid"}
s = json.dumps(order, ensure_ascii=False) # объект → строка; русские буквы остаются читаемыми
back = json.loads(s) # строка → объект
Разбирайте JSON парсером (json.loads), а не поиском по тексту: парсер сразу скажет, что данные битые.
Модули
Код раскладывают по файлам: from utils import mean берёт функцию из utils.py. Стандартная библиотека Python (json, pathlib, csv, datetime) уже установлена — сначала ищите там.
Практикум: 5 задач с JSON
file_stats(path)→{"lines": …, "words": …}для текстового файла.paid_total(path)— файл JSON со списком заказов; суммаamountу заказов со статусом"paid".load_json_safe(path)— нет файла или битый JSON → понятное сообщение иNone, программа не падает.validate_order(o)— список ошибок: нет поляid,amount,status; неверный тип;amount < 0.save_report(path, report)— сохранить отчёт в JSON с отступами и читаемыми русскими буквами.
