Чтение и запись CSV, парсинг JSON, контекстный менеджер with open — повседневные задачи аналитика. На собеседовании могут попросить прочитать CSV без pandas, распарсить вложенный JSON или объяснить разницу между json.load и json.loads. Эти навыки показывают, что кандидат не привязан к одной библиотеке.
Чтобы сохранить Python-объект в JSON-файл, сначала сериализуйте его в строку через `json.dumps(rows)`, а затем запишите строку в файл (открытый в режиме `w`). `f.write(...)` ожидает строку, поэтому запись «как есть» объекта `rows` не подходит. В аналитике это типичный шаг при сохранении результатов расчётов в переносимый формат.
Подробный разбор →Метод `f.write(text)` записывает текст в файл и возвращает количество записанных символов. Это может быть полезно, если вы хотите быстро проверить, что запись действительно произошла. В примере `f.write("OK")` запишет два символа, поэтому `n` будет равна 2.
Подробный разбор →`json.loads()` ожидает JSON-текст (строку), поэтому типичный путь: открыть файл в режиме чтения (`r`), прочитать содержимое через `f.read()`, а затем вызвать `json.loads(...)`. Контекстный менеджер `with` гарантирует закрытие файла. Это помогает не перепутать «JSON-строку» и «Python-объект»: файл хранит текст, а `json.loads()` превращает его в структуру данных.
Подробный разбор →По умолчанию `json.dumps(obj)` часто экранирует не-ASCII символы (кириллицу) в виде последовательностей вроде `\uXXXX`. Если вы хотите получить читаемый JSON, используйте `json.dumps(obj, ensure_ascii=False)`. При записи в файл дополнительно важно открыть его с `encoding="utf-8"`, чтобы текст был сохранён корректно.
Подробный разбор →Модуль `csv` ожидает, что управление переводами строк будет сделано корректно, поэтому часто рекомендуют открывать файл с `newline=""`. Это особенно полезно для кроссплатформенной работы, чтобы избежать лишних пустых строк или некорректного разбиения строк при чтении/записи CSV. Также обычно задают `encoding="utf-8"`, чтобы одинаково читать файлы с не-ASCII символами.
Подробный разбор →В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать Python в Telegram