jimkongho 2022-05-02 18:33 采纳率: 80%
浏览 47
已结题

json批量追加数据问题

import os
import json

path = r'path'      #原数据路径
json_list = os.listdir(path)
path_n = r'path'    #新数据路径
json_list_n = os.listdir(path_n)

i = 0
for f in json_list:
    if os.path.splitext(f)[-1] == '.json':
        i += 1
        print('原__',f)
        with open(os.path.join(path,f),'r',encoding='utf-8') as load_f:
            data_old  = json.load(load_f)
            shape = data_old['shapes'][-1]
            #print(shape)

for f_n in json_list_n:
    if os.path.splitext(f_n)[-1] == '.json':
        i += 1
        print('新__',f_n)
        with open(os.path.join(path_n,f_n),'r',encoding='utf-8') as dump_f:
            data_new  = json.load(dump_f)
            data_new['imageData'] = None
            shape_n = data_new['shapes']
            shape_n.append(shape)
            #print(shape_n)
        with open(os.path.join(path_n,f_n),'w',encoding='utf-8') as f_add:
            json.dump(data_new,f_add,indent=2)



有原4个json文件和新的4个json文件,我想要新的json数据分别更新到原的json里面。为什么我写的代码不能一对一更新?
比如我要的结果是: 原1.json更新到新1.json; 原2.json更新到新2.json。
但现在的结果是只能看到原4.json 统一更新到新 1 2 3 4。需要修改哪里呀

  • 写回答

1条回答 默认 最新

  • 我不喜欢这个世界 2022-05-02 20:46
    关注
    import os
    import json
    
    path = r'path'  # 原数据路径
    json_list = os.listdir(path)
    path_n = r'path'  # 新数据路径
    json_list_n = os.listdir(path_n)
    
    for index in range(len(json_list)):
        if os.path.splitext(json_list[index])[-1] == '.json':
    
            print('原__', json_list[index])
            with open(os.path.join(path, json_list[index]), 'r', encoding='utf-8') as load_f:
                data_old = json.load(load_f)
                shape = data_old['shapes'][-1]
                # print(shape)
            if os.path.splitext(json_list_n[index])[-1] == '.json':
                print('新__', json_list_n[index])
                with open(os.path.join(path_n, json_list_n[index]), 'r', encoding='utf-8') as dump_f:
                    data_new = json.load(dump_f)
                    data_new['imageData'] = None
                    shape_n = data_new['shapes']
                    shape_n.append(shape)
                    # print(shape_n)
                with open(os.path.join(path_n, json_list_n[index]), 'w', encoding='utf-8') as f_add:
                    json.dump(data_new, f_add, indent=2)
    

    确保顺序一致,不值得话先排个序就行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日

悬赏问题

  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载