Вопросы по теме «Работа с файлами: JSON и CSV»

Проверь себя · 1/3разбор после ответа
Вы сохраняете результат анализа в файл отчёта. Что произойдёт, если выполнить open("report.csv", "w"), когда report.csv уже существует?

Чтение и запись CSV, парсинг JSON, контекстный менеджер with open — повседневные задачи аналитика. На собеседовании могут попросить прочитать CSV без pandas, распарсить вложенный JSON или объяснить разницу между json.load и json.loads. Эти навыки показывают, что кандидат не привязан к одной библиотеке.

Всего в этом разделе 20 вопросов. Каждый — с правильным ответом и кратким разбором теории. Разбито на 4 части по 5 вопросов.

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных

Вопросы 15 из 20

1Вы читаете `products.csv` через `csv.DictReader(f)` и получили строку `row`. Как правильно взять значение столбца `price`?
A`row["price"]`: доступ по имени столбца через ключ словаря у `csv.DictReader`
B`row[1]`: доступ по числовому индексу столбца, как в обычном `list` или `csv.reader`
C`row.price`: доступ как к атрибуту объекта через точку, через имя поля
D`row.get(1)`: словарный метод `.get()` с числовым индексом вместо имени столбца
Ответ: У `csv.DictReader` доступ к полям идёт по имени столбца как к ключу словаря.

`csv.DictReader` возвращает для каждой строки словарь, где ключи — названия столбцов из заголовка. Поэтому значение поля `price` берут как `row["price"]`. Числовой индекс работает у обычного `csv.reader`, но не у `DictReader`. Помните, что значения приходят строками, и для расчётов цену часто нужно преобразовать, например через `float(...)`.

Подробный разбор →
2Вы хотите дописывать строки в файл лога `errors.log`, не удаляя то, что уже записано. Как открыть файл?
A`open("errors.log", "a")`
B`open("errors.log", "w")`
C`open("errors.log", "r")`
D`open("errors.log", "r+")`
Ответ: Режим `a` добавляет данные в конец файла.

Если нужно сохранять историю и дописывать новые строки, используйте режим `a` (append): `open("errors.log", "a")`. В этом режиме запись идёт в конец, а если файла ещё нет, он будет создан. Режим `w` перезапишет файл (очистит), а режим `r` предназначен только для чтения.

Подробный разбор →
3Есть словарь `cfg = {"threshold": 0.8}`. После `s = json.dumps(cfg)` что хранится в `s`?
AТот же словарь `cfg` типа `dict` без каких-либо преобразований над содержимым
BJSON-строка вида `'{"threshold": 0.8}'` типа `str` с сериализованным содержимым
CСписок ключей словаря `['threshold']` типа `list` без значений сериализации
DОткрытый файл `cfg.json`, в который записан сериализованный JSON
Ответ: `json.dumps()` сериализует объект и возвращает JSON в виде строки.

`json.dumps(cfg)` сериализует Python-объект и возвращает JSON в виде строки (тип `str`). Это удобно, когда нужно сохранить результат в файл через `f.write(...)` или отправить по сети. Обратная операция — `json.loads(...)`, которая принимает строку JSON и возвращает объект (например, словарь). Чтобы сразу записать в файл, используют `json.dump(cfg, f)` (без `s`).

Подробный разбор →
4Вы сохраняете результат анализа в файл отчёта. Что произойдёт, если выполнить `open("report.csv", "w")`, когда `report.csv` уже существует?
AФайл откроется на запись и очистится: старое содержимое удалится, запись пойдёт с начала
BНовые данные допишутся в конец файла, старое содержимое останется без изменений
CБудет выброшено исключение, поскольку режим запрещает работу с уже существующим файлом
DФайл откроется только для чтения, попытка записи выбросит ошибку режима доступа
Ответ: Режим `w` создаёт файл для записи или очищает существующий.

Если открыть файл через `open("report.csv", "w")`, Python откроет его в режиме записи. Если файл уже существует, его содержимое будет обнулено (перезаписано с начала). Этот режим подходит для «пересборки» отчёта с нуля. Если нужно дописывать в конец, используют режим `a`.

Подробный разбор →
5Вы используете `csv.reader` для чтения файла. Что такое `row` в цикле `for row in csv.reader(f):`?
AСловарь с названиями столбцов в качестве ключей и значениями полей текущей строки
BОдна строка файла целиком как объект типа `str` без разбиения на столбцы CSV
CКортеж из двух элементов: номер строки в файле и её исходный текстовый вид
DСписок строковых значений по столбцам, представляющий поля одной строки CSV
Ответ: `csv.reader` возвращает каждую строку как список полей.

Итерация по `csv.reader(f)` возвращает каждую строку CSV как список значений по столбцам. Обычно все элементы — строки, поэтому для аналитики часто требуется явное преобразование типов (например, `int(...)` или `float(...)`). Если нужен доступ по имени столбца, вместо `csv.reader` выбирают `csv.DictReader`.

Подробный разбор →
1234

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать Python в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrameСинтаксис и типы данных