Python: не удаляется ключ из JSON файла — как исправить и сохранить изменения

Python: не удаляется ключ из JSON файла — как исправить и сохранить изменения
Разработка и программирование
Содержание показать/скрыть

Если при работе с JSON в Python ты удаляешь ключ из данных, но файл остаётся без изменений — это не ошибка кода, а особенность работы с JSON.

Разберём, почему так происходит и как правильно исправить.


В чём проблема

Пример ситуации:

import json
json_data = json.load(open('reda.json'))
k = "carl"

for d in json_dаta:
if k in d:
del d[k]

На первый взгляд всё работает — ключ удаляется.
Но если открыть файл — ничего не изменилось.


Почему ключ не удаляется из файла

Когда ты используешь:

json.load()

Python:

  • загружает JSON в память
  • создаёт копию данных
  • не связывает её с файлом

👉 То есть ты меняешь только переменную, а не сам файл.


Как правильно исправить

После изменений нужно перезаписать файл


Рабочий способ (правильный код)

import json

# Чтение файла
with open('reda.json', 'r') as f:
json_data = json.load(f)

k = "carl"

# Удаление ключа
for d in json_dаta:
if k in d:
del d[k]

# Запись обратно в файл
with open('reda.json', 'w') as f:
json.dump(json_data, f, indent=4)

Что изменится после исправления

Было:

[{"carl": 33}, {"carl": 55}, {"user": "user2"}]

Стало:

[{}, {}, {"user": "user2"}]

👉 Ключ удалён, но объекты остались


Как удалить не только ключ, но и весь объект

Если нужно удалить весь элемент, а не только ключ:

json_data = [d for d in json_data if "carl" not in d]

Полный пример:

import json

with open('reda.json', 'r') as f:
json_data = json.load(f)

json_data = [d for d in json_data if "carl" not in d]

with open('reda.json', 'w') as f:
json.dump(json_data, f, indent=4)

Когда использовать каждый вариант

Удаление только ключа

del d["carl"]

Подходит если:

  • данные нужны дальше
  • структура должна сохраниться

Удаление всего элемента

if "carl" not in d

Подходит если:

  • объект полностью не нужен
  • нужно очистить список

Частые ошибки

1. Не сохраняют файл

Самая распространённая ошибка:

json.load()
# изменения
# нет json.dump()

👉 файл не меняется


2. Неправильный режим открытия

Нужно использовать:

'w'

3. Не используют with open

Это может привести к:

  • ошибкам записи
  • проблемам с файлами

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.