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

2024-05-12 16:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

设置:(创建空白的“银行”字段)

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

Set User:(在“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
        }
    ]
}

Tags: 文件用户nameidjsondatawith密钥
2条回答
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文件()确实覆盖了,但它只覆盖了它所覆盖的内容。也就是说,在文档顶部查找/放置光标将使用新条目覆盖整个文档。你知道吗

相关问题 更多 >