python向json文件中追加内容

我们常常会遇到这样的json文件:

[{
    
    "id": 4, "text": "LOC", "background_color": "#7c20e0", "text_color": "#ffffff"}, 
  {
    
    "id": 5, "text": "MISC", "background_color": "#fbb028", "text_color": "#000000"}, 
  {
    
    "id": 6, "text": "ORG", "background_color": "#e6d176", "text_color": "#000000"}, 
  {
    
    "id": 7, "text": "PER", "background_color": "#6a74b9", "text_color": "#ffffff"},
  {
    
    "id": 10, "text": "DATE", "background_color": "#7c20e0", "text_color": "#ffffff"}, 
  {
    
    "id": 10, "text": "DATE", "background_color": "#7c20e0", "text_color": "#ffffff"}]

可以看出文件的开头和结尾是“[”,“]”,这种文件中的每一行(一个记录)都是一个字典(dict),然后把所有的字典对象添加至列表中(list)。那么,我们如何来追加内容呢?

方法:
(1)先创建一个列表
(2)将当前json文件中已有的内容读入(append)列表中。
(3)将新增的内容以字典形式添加至列表中。
(4)使用json.dump()将该列表写回原文件。

python实现:

def write_json(obj):
    '''
    写入/追加json文件
    :param obj:
    :return:
    '''

    #首先读取已有的json文件中的内容
    item_list = []
    with open('labels.json', 'r') as f:
        load_dict = json.load(f)
        num_item = len(load_dict)
        for i in range(num_item):
            id = load_dict[i]['id']
            text = load_dict[i]['text']

            background_color = load_dict[i]['background_color']
            text_color = load_dict[i]['text_color']
            item_dict = {
    
    'id':id, 'text':text,'background_color':background_color, 'text_color':text_color}
            item_list.append(item_dict)
    #读取已有内容完毕
    #将新传入的dict对象追加至list中
    item_list.append(obj)
    #将追加的内容与原有内容写回(覆盖)原文件
    with open('labels.json', 'w', encoding='utf-8') as f2:
        json.dump(item_list, f2, ensure_ascii=False)



#obj字典对象为新增内容
obj = {
    
    "id": 10,"text": "DATE","background_color": "#7c20e0","text_color": "#ffffff"}
write_json(obj)

参考:https://blog.csdn.net/broccoli2/article/details/103325434

猜你喜欢

转载自blog.csdn.net/broccoli2/article/details/107064690