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

如何使用python将数据正确地附加到JSON,python,json,Python,Json,更新: 我现在唯一的问题是,当运行命令添加用户时,它会创建一个完全重复的密钥 问题: json.dump()只是将条目添加到json的末尾,我希望它用新更新的条目覆盖整个文件 设置:(创建空白的“银行”字段) 设置用户:(在“银行”内创建用户密钥) 首次使用的输出: {"banks": []}{ "banks": [ { "name": "ViperZ-14", "id": 367151547575959562,

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

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

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

设置用户:(在“银行”内创建用户密钥)

首次使用的输出:

{"banks": []}{
    "banks": [
        {
            "name": "ViperZ-14",
            "id": 367151547575959562,
            "balance": 0
        }
    ]
}
我需要的是:

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

我发现解决办法是简单地从文件的开头开始。json.dump()确实会覆盖,但它只会覆盖其中的内容。又名,在文档顶部搜索/放置光标将使用新条目覆盖整个文档

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'}]

使用
append
'a'
当打开一个文件@jamie时,如果该文件可能是直接附加文本的副本,我希望它是格式化的,即使用逗号之类的分隔符,放在[]和@VishnudevRead中读取该文件,将json加载到一个变量中,将数据附加到该变量并写入文件。@Vishnudev上面是我对您所述内容的尝试,出于某种原因,它在第29行json.load()处抛出一个错误。无需搜索。
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'}]