Как сохранить словарь в файл json и потом добавлять в него элементы?

У меня есть файл dict_bludo.json я сохраняю в него пустой словарь bludo_kbju = {}, как лучше всего добавлять в него ключ и значение?

import json

bludo_kbju = {}
#  создаю файл и добавляю словарь в него
with open('dict_bludo.json', 'w+') as f:
    json.dump(bludo_kbju, f)
#  открываю файл, добавляю новое значение в словарь и сохраняю в файле
with open('dict_bludo.json', 'r+') as f:
    bludo_kbju = json.load(f)
    bludo_kbju['fff'] = 3
    json.dump(bludo_kbju, f)

Потом когда я пытаюсь его открыть выдает ошибку(


Ответы (1 шт):

Автор решения: CrazyElf

Нужно или закрывать файл после чтения и открывать заново на запись, либо перематывать файл на начало перед записью после чтения:

with open('dict_bludo.json', 'r+') as f:
    bludo_kbju = json.load(f)
    bludo_kbju['fff'] = 3
    f.seek(0, 0) # <- ПЕРЕМОТКА НА НАЧАЛО
    json.dump(bludo_kbju, f)

А у вас получается вот что в файле из-за того, что вы пишете после чтения в тот же файл без перемотки:

{}{"fff": 3}
→ Ссылка