Python запись в файл JSON добавляет дополнительные скобки - PullRequest
0 голосов
/ 21 июня 2020

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

with open('files/{}.json'.format(ctx.guild.id), 'w+') as file:
    addData = {"usersbday":{str(user.id): combined}}
    data = json.load(file)
    data.update(addData)
    file.seek(0)
    json.dump(data, file, indent=4)

И мой JSON (с добавленной скобкой в ​​конец):

{
"info": {
    "prefix": ".",
    "color": "0x76b04a"
},
"users": {
    "524251322823856149": "Paris"
},
"usersbday": {
    "524251322823856149": "august 5"
}}
}

Дополнительная скобка добавляется при обновлении дня рождения в В usersbday меньше символов - например, изменение с august 5 на may 1. Есть ли способ избежать этого при записи в файл, или мне просто нужно добавлять операторы catch каждый раз, когда я пишу в файл, на случай, если добавится дополнительная скобка? Та же проблема возникает, когда я обновляю местоположение в словаре users - мой код в основном идентичен для этого. Любые идеи? Спасибо!

1 Ответ

2 голосов
/ 21 июня 2020

Самое простое решение: добавьте file.truncate() сразу после dump данных (или после seek, хотя это полностью очищает файл, и вы также можете сначала записать свои новые данные, чтобы ограничить количество отбрасываемых данных) , который удалит любые данные, помимо записанных вами.

Это не указано * от c до JSON, это просто то, как вы говорите: «куда бы файл ни указывал, обрезайте файл до отбросить все данные за его пределами ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...