如何使用python将数据正确地附加到JSON中



更新:我现在遇到的唯一问题是,当运行添加用户的命令时,它会创建一个完全重复的密钥。

问题:json.dump((只是将条目添加到json的末尾,我希望它用新更新的条目覆盖整个文件

设置:(创建空白的"银行"字段(

with open(DATA_FILENAME, mode='w', encoding='utf-8') as f:
data = {"banks": []}
json.dump(data, f)

设置用户:(在"Banks"中创建用户密钥(

member = ctx.message.author
entry = {'name': member.name, 'id': member.id, 'balance': 0}
with open(DATA_FILENAME, 'r+') as outfile:
data = json.load(outfile)
data['banks'].append((entry))
json.dump(data, outfile, indent=4)

首次使用的输出:

{"banks": []}{
"banks": [
{
"name": "ViperZ-14",
"id": 367151547575959562,
"balance": 0
}
]
}

我需要什么:

{
"banks": [
{
"name": "ViperZ-14",
"id": 367151547575959562,
"balance": 0
}
]
}
file_path = '/home/vishnudev/Downloads/new.json'
import json
def load(file, mode, data=[]):
with open(file, mode) as f:
if mode == 'r':
return json.load(f)
elif mode == 'w':
json.dump(data, f)
def get_data_func():
return {
'name': 'vishnu',
'data': 'dev'
}
d = load(file_path, 'r')
print(d)
d.append(get_data_func())
load(file_path, 'w', d)
d = load(file_path, 'r')
print(d)

输出:

运行以上两次后,我得到

[{'name': 'vishnu', 'data': 'dev'}]
[{'name': 'vishnu', 'data': 'dev'}, {'name': 'vishnu', 'data': 'dev'}]

我发现解决方案只是简单地查找文档的开头。json.dump((确实会覆盖,但它只会覆盖它所使用的内容。AKA,在文档顶部查找/放置光标将使用新条目覆盖整个文档。

最新更新