❌ Ошибка 1: json.dumps вместо json.dump
# Неправильно
import json
data = {"name": "Alice"}
with open("data.json", "w", encoding="utf-8") as f:
json.dumps(data, f)
Сообщение об ошибке: TypeError: ...
Почему возникает: dumps принимает только объект и возвращает строку, а не файловый объект.
✅ Исправление
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
❌ Ошибка 2: Русский текст в JSON
# Неправильно
import json
data = {"city": "Минск"}
print(json.dumps(data)) # {"city": "\u041c\u0438\u043d\u0441\u043a"}
Почему возникает: По умолчанию ensure_ascii=True экранирует не-ASCII символы.
✅ Исправление
print(json.dumps(data, ensure_ascii=False))
❌ Ошибка 3: Неверный формат strptime
# Неправильно
from datetime import datetime
dt = datetime.strptime("15-06-2025", "%d/%m/%Y")
Сообщение об ошибке: ValueError: time data ... does not match format ...
Почему возникает: Формат должен точно соответствовать строке, включая разделители.
✅ Исправление
dt = datetime.strptime("15-06-2025", "%d-%m-%Y")
❌ Ошибка 4: Попытка повторно использовать генератор
# Неправильно
def count_up_to(n):
for i in range(1, n + 1):
yield i
gen = count_up_to(3)
print(list(gen)) # [1, 2, 3]
print(list(gen)) # []
Почему возникает: Генератор исчерпывается после первого прохода. Для повторного использования нужно создать новый объект.
✅ Исправление
print(list(count_up_to(3)))
print(list(count_up_to(3)))
❌ Ошибка 5: Одинарные кавычки в JSON
# Неправильно
import json
data = json.loads("{'x': 1}")
Сообщение об ошибке: json.JSONDecodeError
Почему возникает: JSON требует двойные кавычки для строк и ключей.
✅ Исправление
data = json.loads('{"x": 1}')