【发布时间】:2021-10-13 08:44:47
【问题描述】:
我想知道是否有任何方法可以更新 json 文件而不必完全重写 json 文件。如下例所示,我首先必须从 json 文件中检索所有数据,然后添加/编辑原始数据,然后在原始文件上重写新的数据字典。是否可以直接编辑几行json文件?
我有一个主文件和一个 json 文件,如下所示:
主文件
import json
with open('animals.json') as f:
data = json.load(f)
attributes = {"Food": "", "Size": "", "Habitat": ""}
data["Animal 1"]["Food"] = "Meat"
data["Animal 1"]["Size"] = "Medium"
data["Animal 1"]["Habitat"] = "Savannah"
attributes["Food"] = "Nuts"
attributes["Size"] = "Small"
attributes["Habitat"] = "Forest"
data["Animal 3"] = dict(attributes)
# attributes["Food"] = "Plankton"
# attributes["Size"] = "Large"
# attributes["Habitat"] = "Ocean"
# data["Animal 2"] = dict(attributes)
with open('animals.json', 'w') as f:
json.dump(data, f, indent=4)
JSON 文件
{
"Animal 1": {
"Food": "Banana",
"Size": "Medium",
"Habitat": "Jungle"
},
"Animal 2": {
"Food": "Plankton",
"Size": "Large",
"Habitat": "Ocean"
}
}
当前代码更新了 json 文件(Animal 1 属性并添加了 Animal 3)如下所示:
{
"Animal 1": {
"Food": "Meat",
"Size": "Medium",
"Habitat": "Savannah"
},
"Animal 2": {
"Food": "Plankton",
"Size": "Large",
"Habitat": "Ocean"
},
"Animal 3": {
"Food": "Nuts",
"Size": "Small",
"Habitat": "Forest"
}
}
这个方法有什么替代品吗?
【问题讨论】:
-
如果你想让这个可扩展,我可能会使用 sqlite 之类的东西,它可以让你挑选出特定的记录并进行编辑。
-
与JSON无关; 文件 不能那样工作。此外,这一切都与“上传”无关,这意味着将文件从您的计算机传输到服务器。
-
所以我不能将它与json文件一起使用@dir
-
@ChristopherOjo 我不知道你的长期目标是什么,但要回答这个问题:不。你必须每次都重写文件。
-
"整个问题是"上传"到"json""文件""不,不是。 “上传”这个词并不意味着您认为它的意思。
标签: python json file dictionary