在多个 json 个文件的末尾添加文本

Add text to the end of multiple json files

我对编程很陌生,所以请原谅任何糟糕的解释。基本上我有 1000 json 个文件,所有这些文件都需要在末尾添加相同的文本。这是一个例子:

这是现在的样子:

{"properties": {
    "files": [
      {
        "uri": "image.png",
        "type": "image/png"
      }
    ],
    "category": "image",
    "creators": [
      {
        "address": "wallet address",
        "share": 100
      }
    ]
  }
}

我想看起来像这样:

 {"properties": {
    "files": [
      {
        "uri": "image.png",
        "type": "image/png"
      }
    ],
    "category": "image",
    "creators": [
      {
        "address": "wallet address",
        "share": 100
      }
    ]
  },
    "collection": {"name": "collection name"}
}

我已尽最大努力添加和更新,但它总是告诉我没有要添加的属性。我也不知道我在做什么。

这会很尴尬,但这是我尝试过但失败了的方法。

import json

entry= {"collection": {"name": "collection name"}}

for i in range((5)):
  a_file = open("./testjsons/" + str(i) + ".json","r")
  json_obj = json.load(a_file)
  print(json_obj)

json_obj["properties"].append(entry)
a_file = open(str(i) + ".json","w")
json.dump(json_obj,a_file,indent=4)
a_file.close() 
json.dump(a_file, f)

错误代码:json_obj["properties"].append(entry) AttributeError: 'dict' 对象没有属性 'append'

JSON,和XML一样,是一种特殊的数据格式。您应该始终 解析 数据并尽可能将其作为 JSON 使用。这不同于您将 'add to the end' 或 'append' 文本的纯文本文件。

Python 中有许多 json 解析库,但您可能希望使用内置于标准 Python 中的 json encoder图书馆。对于文件 myfile.json,您可以:

import json
with open('myfile.json`, 'r') as f:
    myfile = json.load(f) # read the file into a Python dict
    myfile["collection"] = {"name": "collection name"} # here you're adding the "collection" field to the end of the Python dict
# If you want to add "collection" inside "properties", you'd do something like
#.  myfile["properties"]["collection"] = {"name": "collection name"}

with open('myfile.json', 'w') as f:
    json.dump(myfile, f) # save the modified dict into the json file

您不使用 append() 添加到字典中。您可以分配给键以添加单个条目,或使用 .update() 合并字典。

import json

entry= {"collection": {"name": "collection name"}}

for i in range((5)):
    with open("./testjsons/" + str(i) + ".json","r") as a_file:
        a_file = open("./testjsons/" + str(i) + ".json","r")
        json_obj = json.load(a_file)
        print(json_obj)
        
    json_obj.update(entry)
    with open(str(i) + ".json","w") as a_file:
        json.dump(json_obj,a_file,indent=4)