python - 您好.. 我正在尝试建立一个升级系统,我在终端中没有收到任何错误,但 json 数据没有更新
问题描述
这是我的代码,正如我在终端中所说的那样,没有错误,但是,json 文件不会更新,是的,我的 json 文件以 {} 开头,我没有给出完整的代码,但只有必要的代码来检查..
@client.event
async def on_member_join(member):
with open("users.json", "r") as f:
json.load(f)
users = await update_data(users, member)
with open("users.json", "w") as f:
json.dump(users, f)
@client.event
async def on_message(message):
with open("users.json", "r") as f:
users = json.load(f)
await update_data(users, message.author)
await add_experience(users, message.author, 5)
await level_up(users, message.author, message.channel)
with open("users.json", "w") as f:
json.dump(users, f)
async def update_data(users, user):
if not user.id in users:
users[user.id] = {}
users[user.id]['experience'] = 0
users[user.id]]'level"] = 1
async def add_experience(users, user, exp):
users [user.id]["experience"] += exp
async def level_up(users , user , channel):
experience = users[user.id]['experience']
lvl_start = users[user.id]['level']
lvl_end = int(experience ** (1/4))
if lvl_start < lvl_end:
await ctx.send(channel , '{} has leveled up to level {}'.format(user.mention , lvl_end))
users[str(user.id)]["level"] = lvl_end
with open("users.json","w") as f:
json.dump(users , f)
解决方案
async def on_member_join(member):
with open("users.json", "r") as f:
json.load(f)
这会加载您的 JSON 文件并将结果扔到地板上。你自找的:
async def on_member_join(member):
with open("users.json", "r") as f:
users = json.load(f)
您可能会考虑编写“read_config”和“write_config”例程来封装它,以避免错误。
推荐阅读
- laravel - 如何使路由接受 # 以访问长页面中的各个段落
- sql-server - 使用 cluster.exe 为 MS SQL 故障转移 AOAG 创建批处理脚本
- android - 三星可穿戴 Tizen 应用拒绝无深层链接
- cmake - CMake - 将 add_library 设置为 SHARED 会导致致命错误 U1073:不知道如何制作
- c# - 如果 XML 文件不再可用,C# 会中断 XML 读取功能
- excel - VBA SpecialCells 代码适用于家用电脑,但不适用于工作电脑
- google-api - GSuite - 使用非管理员访问令牌检索组织中的组
- android - 我如何设计一个移动应用程序来跟踪其他应用程序
- c - 使用 STM32 HAL 的 I2C 通信问题
- pandas - 在 Google Colab 中哪里可以下载 WriteLP 文件