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