Неправильная сериализация словаря python

Доброго времени суток!

Делаю бота, который должен записывать данные по юзеру в json. Накидал такой код. Он пробует прочитать файл json, и если он пустой, то создает новый словарь со значениями первого пользователя, после чего сохраняет в файл.

#регистрация в json
with open('users/user_progres.json', 'r+') as progress:

  try:
    users_steps = json.load(progress)
    print(users_steps)
    print('Прочитал ****************************')
    
  except:
    users_steps = {}
    print('Создал ****************************')
    
  users_steps[user_id] = {'user_code': str(message.text), 'user_cur_step': '0'}
  print(users_steps)
  print('Записал ************************')
  json.dump(users_steps, progress, indent=2)
  progress.close()

После первого запуска я имею следующую запись в файле

{
  "123123": {
    "user_code": "some_code",
    "user_cur_step": "0"
  }
}

После второго запись меняется на следующую

{
  "123123": {
    "user_code": "some_code",
    "user_cur_step": "0"
  }
}{
  "123123": {
    "user_code": "some_code",
    "user_cur_step": "0"
  },
  "123123": {
    "user_code": "some_code",
    "user_cur_step": "0"
  }
}

Мало того, что добавляется два значения, так еще и становится понятно, что только второй объект является цельным словарем, после первого нет запятой. После третьего и всех последующих запусков опять добавляются элементы, как первый, то есть с разделением не запятой, а создается как бы отдельный словарь. Прошу помочь разобраться, что я делаю не так?


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