В файле events.json лежит JSON-текст. Как корректно получить Python-объект из этого файла?
A
obj = json.dumps(open('events.json', 'r', encoding='utf-8')): dumps сериализует объект в строкуB
with open('events.json', 'r', encoding='utf-8') as f: obj = json.loads(f.read()): читаем текст и парсимC
obj = json.loads(open('events.json', 'r', encoding='utf-8')): loads ждёт строку, а не файловый объектD
with open('events.json', 'w', encoding='utf-8') as f: obj = json.loads(f.read()): открытие в w стирает файлПравильный ответ. Сначала читаем текст из файла, затем разбираем его через
json.loads().Разбор
json.loads() ожидает строку с JSON-текстом. Поэтому открываем файл в режиме чтения r, забираем содержимое через f.read(), и только потом вызываем json.loads(...). Контекстный менеджер with гарантирует закрытие файла. Вариант с json.dumps неверен: эта функция, наоборот, превращает Python-объект в строку. Открытие в режиме w уничтожит исходный файл.
Проверь себя · 1/3разбор после ответа
Что произойдёт при выполнении вызова
open("missing.csv", "r"), если файла missing.csv не существует в текущей директории?Ещё вопросы по теме «Работа с файлами: JSON и CSV»
- Вы сохраняете результат анализа в файл отчёта. Что произойдёт, если выполнить `open("report.csv", "w")`, когда `report.csv` уже существует?
- Что гарантирует конструкция `with open("data.csv", "r") as f:` при чтении файла в Python?
- Есть строка `text = '{"user_id": 7, "active": true}'`. Что вернёт `json.loads(text)`?
- Вы читаете CSV с заголовком через `csv.DictReader(f)`. Что представляет собой `row` внутри цикла `for row in csv.DictReader(f):`?
- Вы хотите дописывать строки в файл лога `errors.log`, не удаляя то, что уже записано. Как открыть файл?
- Все вопросы по «Работа с файлами: JSON и CSV» →