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

  1. file_stats(path) → {"lines": …, "words": …} для текстового файла.
  2. paid_total(path) — файл JSON со списком заказов; сумма amount у заказов со статусом "paid".
  3. load_json_safe(path) — нет файла или битый JSON → понятное сообщение и None, программа не падает.
  4. validate_order(o) — список ошибок: нет поля id, amount, status; неверный тип; amount < 0.
  5. save_report(path, report) — сохранить отчёт в JSON с отступами и читаемыми русскими буквами.

Диагностика уровня

С какого уровня начать?

Оставьте контакты — свяжемся, зададим несколько вопросов об опыте и целях и подскажем уровень входа: с нуля, с середины программы или через Fast Track для разработчиков.

Или напишите: hello@superint.ru