Неправильная сериализация словаря 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"
}
}
Мало того, что добавляется два значения, так еще и становится понятно, что только второй объект является цельным словарем, после первого нет запятой. После третьего и всех последующих запусков опять добавляются элементы, как первый, то есть с разделением не запятой, а создается как бы отдельный словарь. Прошу помочь разобраться, что я делаю не так?