我目前正在为我的discord.py机器人开发一个警告系统。我一直很顺利,直到我意识到我不知道如何添加到文件中,而不是覆盖文件。我不想添加到文件的末尾,因为我希望它按照不和谐的协会进行分类,然后是协会成员。因此,当有人想要检查他们的警告时,它只会在调用命令的特定帮会中显示他们的警告。我的问题是,将信息存储到.json
文件的所有不同方式是什么
例如:warn_list[str(ctx.guild.id)][member.id].add({stuff in here})
如示例所示,我不想知道存储aka'a'
、'w'
等的不同模式。我想知道,如果有的话,最后可以添加什么。比如.append()
或者.add()
。我在谷歌上搜索了一个列表,但我找不到我要找的信息。任何帮助都将不胜感激
真诚地, 杀人狂
如何添加持久化到JSON的自定义数据
您正在向字典添加数据,因此可以使用
dict[key] = value
添加数据,使用value = dict[key]
读取数据。要添加到list
的末尾,请使用append()
你和你所拥有的很接近。让我们进行重构,以保持思维清晰:
我们可以直接使用这个字典来存储关于这个
member.id
的警告信息。我们需要一个数据结构,我认为list
符合要求(或者dict
)。您可能希望在这些警告中包含时间信息,而时间似乎是一个合理的排序顺序和/或主键通常不直接修改
.json
文件。修改.json
文件的唯一可靠方法是将整个内容读入内存,然后在修改后将其保存回.json
把一个
.json
文件想象成一张及时的照片或快照。如果场景发生了变化,你只需扔掉旧照片,再拍一张;如果状态已更新,我们只需丢弃旧的warnings.json
,并创建一个新的warnings.json
步骤1:添加新字段并附加到新字段
鉴于我们有关于最新
warning
的信息,我们可以将其保存到用户的历史记录中:您添加的这些新字段不应与任何内容冲突,因为它们是代码其他部分未知的定制字段
如果您发现将每个警告包装在时间戳中很麻烦,那是因为它是。但是,通常选择单个字段(或字段组合)作为整个对象的代表键。这有助于人们直接读取json文件,还可以简化处理逻辑
步骤2:读取新字段数据
稍后,用户希望查看其警告。以下内容每次打印一条警告(来自SO的日期时间代码):
输出:
支持的数据类型
JSON编码器文档有一个mapping说明如何将序列化的JSON数据转换为反序列化的python对象。注意,它将元组转换为列表
检查
warnings.json
如果您遵循我的示例,您应该会看到在
warnings.json
中的相应用户下添加了以下内容:1方括号表示法是
__getitem__()
和__setitem__()
的语法糖相关问题 更多 >
编程相关推荐