При сохранении json файла возникают артефакты

Я пишу discord бота используя discord.py, но при сохранении json файла появляются артефакты. Код:

async def use(ctx, item=''):
    with open('wallets.json', 'r+', encoding='utf-8') as f:
        wallet = json.load(f)
        with open('shop.json', 'r', encoding='utf-8') as t:
            store = json.load(t)
        for i in range(len(store["shop_items"])):
            item_name = store["shop_items"][i]["name"]
            item_answer = store["shop_items"][i]["answer"]
            item_role = store["shop_items"][i]["role"]
            if item_name == item:
                for i in range(len(wallet["wallets"])):
                    wallet_owner_id = wallet["wallets"][i]["id"]
                    wallet_server_id = wallet["wallets"][i]["server_id"]
                    if wallet_owner_id == ctx.author.id and wallet_server_id == ctx.guild.id:
                        for j in range(len(wallet["wallets"][i]["inv"])):
                            if wallet["wallets"][i]["inv"][j] == item_name:
                                emb = discord.Embed(title=f'Использовать предмет {item_name}',
                                                    colour=discord.Color.purple())

                                emb.add_field(name=item_name, value=item_answer)

                                t.close()

                                del wallet["wallets"][i]["inv"][j]

                                if item_role is not None:
                                    await ctx.author.add_role(role_id=item_role)

                                await ctx.reply(embed=emb)

                                f.seek(0)
                                json.dump(wallet, f, indent=4, ensure_ascii=False)

                                f.close()
                                return
                        emb = discord.Embed(title=f'У вас нету предмета {item_name}', colour=discord.Color.red())
                        emb.add_field(name=f'Купите {item_name}', value=f'Используйте o!store_buy '
                                                                        f'{item_name} чтобы купить {item_name}!')
                        await ctx.reply(embed=emb)
                        f.close()
                        t.close()
                        return
                emb = discord.Embed(title='Нет кошелька', colour=discord.Color.dark_red())
                emb.add_field(name='Зарегистрируйте кошелёк', value='Используйте o!reg_wallet')
                await ctx.reply(embed=emb)
                f.close()
                t.close()
                return

        emb = discord.Embed(title=f'Неправильное название предмета "{item_name}"', colour=discord.Color.red())

        emb.add_field(name='Введите корректное название.', value=f'Предмета "{item_name}" не существует. Введите '
                                                                 f'название из магазина предметов.')
        f.close()
        t.close()

shop.json:

{
    "shop_items": [
        {
            "name": "Чай",
            "price": 10,
            "description": "Попейте чай, успокойтесь!",
            "answer": "Вы выпили чай",
            "role": null
        }
    ]
}

wallets.json:

{
    "wallets": [
        {
            "id": 982155399706857482,
            "server_id": 1045689590947778581,
            "money": 36992,
            "last_time_worked": "08-12-2022 18:06:11",
            "works_remaining": 0,
            "inv": ["Чай"]
        }
    ]
}

Если я использую функцию use из discord, то wallets.json станет таким:

{
    "wallets": [
        {
            "id": 982155399706857482,
            "server_id": 1045689590947778581,
            "money": 36982,
            "last_time_worked": "08-12-2022 18:06:11",
            "works_remaining": 0,
            "inv": []
        }
    ]
}°Р№"
            ]
        }
    ]
}

Ожидаемый результат:

{
    "wallets": [
        {
            "id": 982155399706857482,
            "server_id": 1045689590947778581,
            "money": 36982,
            "last_time_worked": "08-12-2022 18:06:11",
            "works_remaining": 0,
            "inv": []
        }
    ]
}

Помогите, пожалуйста


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