精华内容
下载资源
问答
  • 主要介绍了golang如何修改json文件内容的方法示例,使用一个例子说明golang如何访问和修改json文件,有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python修改json文件内容

    千次阅读 2020-03-14 18:52:34
    import json dict = {} # 用来存储数据 def get_json_data(): # 获取json里面数据 with open('bbox_results.json', 'rb') as f: # 定义为只读模型,并定义名称为f ... # 加载json文件中的内容...
    import json
    dict = {}
    
    
    # 用来存储数据
    
    def get_json_data():
        # 获取json里面数据
    
        with open('bbox_results.json', 'rb') as f:
            # 定义为只读模型,并定义名称为f
    
            params = json.load(f)
            # 加载json文件中的内容给params
            for i in range(len(params)):
                params[i]['score'] = params[i]['score']*10
            # 修改内容
    
            print("params", params)
            # 打印
    
            dict = params
            # 将修改后的内容保存在dict中
    
        f.close()
        # 关闭json读模式
    
        return dict
        # 返回dict字典内容
    
    
    def write_json_data(dict):
        # 写入json文件
    
        with open('out', 'w') as r:
            # 定义为写模式,名称定义为r
    
            json.dump(dict, r)
            # 将dict写入名称为r的文件中
    
        r.close()
        # 关闭json写模式
    
    
    the_revised_dict = get_json_data()
    write_json_data(the_revised_dict)
    # 调用两个函数,更新内容
    

     

    展开全文
  • import json import os dic = {} with open(“E://SAD_data//rgb//image_0.json”,‘r’,encoding=‘utf8’) as fp: data = json.load(fp) num = 0 while num < len(data['shapes']): print(num, len(data['...

    import json
    import os

    dic = {}
    with open(“E://SAD_data//rgb//image_0.json”,‘r’,encoding=‘utf8’) as fp:
    data = json.load(fp)

    num = 0
    while num < len(data['shapes']):
        print(num, len(data['shapes']))
        if data['shapes'][num]['label'] == 'lane1':
            data['shapes'].remove(data['shapes'][num])
        num += 1
    dic = data
    

    fp.close()
    with open(‘E://SAD_data//hsv//image_0.json’,‘w’) as r:
    json.dump(dic,r)
    r.close()

    展开全文
  • 关于json格式,java主要有二种解析方式(还有一种谷歌的解析用的比较少): ... ...下面是一段修改json文件的代码,用的第二种方式 大概思路就是将haisdb对象中的数据库连接(端口和地址):统一...

    关于json格式,java主要有二种解析方式(还有一种谷歌的解析用的比较少):

    1、net.sf.json.JSONObject

    2、com.alibaba.fastjson.JSONObject

    对于第一种和第二种有一个区别就是格式化json的时候,是否会改变对象的顺序。

    下面是一段修改json文件的代码,采用第一种方式,为了保持原json顺序不变,大概思路就是将haisdb对象中的数据库连接(端口和地址):统一改为"host":"hais_db","port":3306,

    json内容:

    {
      "haisdb": {
        "readonly":false,
        "client": "mysql",
        "connection": {
          "host": "155.155.1.177",
          "user": "root",
          "password": "123456",
          "timezone": "0800",
          "database": "hais"
        },
        "timezone": "+08:00",
        "pool": {
          "min": 1,
          "max": 10
        },
        "acquireConnectionTimeout": 10800000
      },
      "redis": {
        "host": "155.155.1.177",
        "db": 0
      }
    }

     

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import net.sf.json.JSONObject;
    
    import java.io.*;
    
    public class UpdateJson {
    
        public static void main(String[] args) {
            String filePath = null;
            File file = null;
            if (args.length == 1){
                filePath =args[0];
                file = new File(filePath);
            } else {
                //filePath = "D:\\updateJson\\db.json";
                //file = new File(filePath);
                System.out.println("请输入要修改的db.json路径,退出码1");
                System.exit(1);
            }
            if (!file.exists()){
                System.out.println("该路径下没有db.json,程序异常退出,退出码1");
                System.exit(1);
            }
            try {
                //JSONObject jsonObject = JSON.parseObject(new FileInputStream(file), JSONObject.class);
                String content = readFileByLines(filePath);
                JSONObject jsonObject = JSONObject.fromObject(content);
                System.out.println("程序开始读取db.json");
                //获取haisdb对象
                Object haisdb = jsonObject.get("haisdb");
                //删除hais对象
                jsonObject.remove("haisdb");
    
                JSONObject haisdbJson = JSONObject.fromObject(haisdb);
                //获取connection对象
                String connection = haisdbJson.getString("connection");
    
                //删除connection对象
                haisdbJson.remove("connection");
    
                JSONObject connectinJson = JSONObject.fromObject(connection);
    
                connectinJson.put("host","hais_db");
                connectinJson.put("port",3306);
    
                haisdbJson.put("connection",connectinJson);
                jsonObject.put("haisdb",haisdbJson);
    
                Object redis = jsonObject.get("redis");
                if (redis != null){
                    jsonObject.remove("redis");
                    JSONObject redisJson = JSONObject.fromObject(redis);
                    redisJson.put("host","hais_redis");
                    redisJson.put("port","6379");
                    jsonObject.put("redis",redisJson);
                }
    
                String pretty = JSON.toJSONString(jsonObject,
                        SerializerFeature.PrettyFormat,
                        SerializerFeature.WriteMapNullValue,
                        SerializerFeature.WriteDateUseDateFormat);
    
                BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
                bw.write(pretty);
                bw.flush();
                bw.close();
                System.out.println("程序正常退出,退出码0");
                System.exit(0);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static String readFileByLines(String fileNmae){
            BufferedReader reader = null;
            String content = "";
            String tempString = null;
            try {
                reader = new BufferedReader(new FileReader(new File(fileNmae)));
                while ((tempString = reader.readLine()) != null){
                    content += tempString;
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            } finally {
                if (reader != null){
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return content;
        }
    }
    

     

    展开全文
  • 下面小编就为大家分享一篇php 读写json文件修改json的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 如何修改.json文件内容

    千次阅读 2019-04-23 23:51:46
    标注小组将前几天收集得到的数据图片进行标注,在标注的时候是按日期进行区分的,由于之前没有跟产品组沟通好,造成后面不同日期下的文件名都重名了~~本来今天的任务是要将这些标注好的图片和相应的json文件合并到一...

    以下是项目过程中遇到的一些数据清洗,预处理和统计等常规操作,有需要的可以自行借鉴下相关模块代码,转载或引用请注明。

    ###################################################################################
    # -.- coding:utf-8 -.-
    # __author__ = 'Jack'
    # __date__ = 2019/07/09
    # 目录下所需文件:
    # 1- menu.xlsx: 存放菜单的Id、Name、Price三个属性
    # 2- origin.json: 存放原始标注图片的标注信息
    # 3- modify.json: 待检查的json文件
    # 操作文档说明:
    # 1- 拿到文件先抽样检查,确保整体无误,跟新下menu,xlsx
    # 2- 将新增图片放入到not_rename_file文件夹下
    # 3- 将相应的json文件命名为modify.json放到与data_process.py文件同级的目录下
    # 4- 修改相应的超参数设置(INDEX_START),运行以下程序:
    # modify = Modify()
    # modify.rename_key()  # 修改json文件相应属性名
    # modify.rename_file_name()  # 修改图片文件名
    # # modify.remark_label()  # 如需修改标签值则调用此函数
    # Check().check_label()
    # 5- 运行结束后检查origin.json是否有新增标注数据信息,若出现错误,则根据提示进行修正再次重新运行
    # 6- 重复步骤1-5,直至将所有批次的新增数据处理完毕,跳转到7-
    # 7- 在主程序中将第4-调用到的所有程序注释掉,确保不被运行到
    # 8- 修改相应的超参数(MORE_THAN_NUM),并运行以下程序:
    # operate = Operate()
    # operate.shuffler_data()
    # label_name, _ = operate.feature_map()
    # number_per_food_train, number_per_food_val, number_per_food_test, nv, nt = operate.counts(label_name)
    # choose_label = \
    #     operate.visualize(number_per_food_train, number_per_food_val, number_per_food_test, label_name, nv, nt)
    # train_list, val_list, test_list = operate.get_label(choose_label)
    # operate.delete_photo('./train', train_list)
    # operate.delete_photo('./val', val_list)
    # operate.delete_photo('./test', test_list)
    # 执行完以上程序需记录“样本数超过?的标签值有?种,即[...]”这两个数据(外加中文标签),并把train/vak/test更新
    # 训练程序配置
    # (1)在caipinshibie.py文件搜索changes修改相应参数
    # (2)在mrcnn文件夹下的model.py文件定位到1711行修改相应的augmentation为None或True
    # (3)运行训练文件
    ###################################################################################
    import json
    import xmltodict
    import pandas as pd
    from collections import OrderedDict
    import matplotlib.pyplot as plt
    import os
    import shutil
    import datetime
    import warnings
    
    
    # 系统参数设置
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文乱码格式
    plt.rcParams['axes.unicode_minus'] = False  # 设置负号正常显示
    warnings.filterwarnings("ignore")  # 忽略警告
    
    # 超参数设置
    MODIFY_JSON_NAME = 'modify.json'  # 待检查的json文件
    ORIGIN_JSON_NAME = 'origin.json'  # 已有的json文件
    OUTPUT_JSON_NAME = 'output.json'  # 经筛选所得到的json文件
    TRAIN_VAL_DIVIDE_JSON_NAME = 'via_region_data.json'  # 划分训练测试集所得的json文件
    MENU_EXCEL_NAME = 'menu.xlsx'  # 菜单,须实时更新
    MODIFY_FILE_PATH = './not_rename_file/'  # 待修改文件名图片的存放路径
    MOVE_FILE_PATH = './json_file/'  # 此文件夹存放已经处理好的图片
    OUTPUT_FILE_PATH = './output_file/'  # 此文件夹存放经过筛选后所得图片
    
    INDEX_START = 955  # 新增图片的起始序号
    MORE_THAN_NUM = 70  # 筛选出出现次数大于多少次的菜品
    
    
    class Modify(object):
        """用于重命名文件或属性"""
    
        ##############################################################################
        # rename_file_name():批量修改文件名
        # rename_key():重命名 json 文件中的键名和 filename 属性值
        # remark_label():修改标签值
        ##############################################################################
    
        @staticmethod
        def rename_file_name():
            files = os.listdir(MODIFY_FILE_PATH)
            cnt = INDEX_START
            for file in files:
                old_name = file
                old_path = os.path.join(MODIFY_FILE_PATH, old_name)
                new_name = 'IMG_' + str(cnt).zfill(4) + '.jpg'
                new_path = os.path.join(MODIFY_FILE_PATH, new_name)
                os.rename(old_path, new_path)
                print(old_name, "========>", new_name)
                cnt += 1
            print("Successful to rename filename!")
    
        @staticmethod
        def rename_key():
            """重命名json,格式为“IMG_0001”"""
    
            re_dict = {}
            cnt = INDEX_START
            with open(MODIFY_JSON_NAME, 'r') as f:
                json_dict = json.load(f)
                for k, val in json_dict.items():
                    rename = "IMG_" + str(cnt).zfill(4) + '.jpg'
                    re_dict[rename] = json_dict[k]
                    re_dict[rename]['filename'] = rename
                    cnt += 1
    
            with open(MODIFY_JSON_NAME, 'w') as f:
                f.write(json.dumps(re_dict))
    
        @staticmethod
        def remark_label():
            """修改标签值"""
    
            with open(ORIGIN_JSON_NAME, 'r') as f:
                # json_dict = json.load(f, object_pairs_hook=OrderedDict)  # 使用有序字典
                json_dict = json.load(f)
                print("修改前的字典顺序:\n", json_dict.keys())
                for k, val in json_dict.items():
                    ls = len(json_dict[k]['regions'])
                    for l in range(ls):
                        if json_dict[k]['regions'][str(l)]['region_attributes']['label'] == '1315':
                            json_dict[k]['regions'][str(l)]['region_attributes']['label'] = '0812'
                            print(k[4: 8])
    
            with open(ORIGIN_JSON_NAME, 'w') as f:
                # json_dict = sorted(zip(json_dict.values(), json_dict.keys()))
                print("修改后的字典顺序:\n", json_dict.keys())
                f.write(json.dumps(json_dict))
    
    
    class Check(object):
        """用于检测标注是否正确,若正确则合并到原始json文件当中"""
    
        #######################################################################################
        # move_file():将符合条件的图片剪切到总的图片文件夹下
        # check_label():检查标签值是否满足三位的格式及在指定的范围内
        #######################################################################################
    
        @staticmethod
        def move_file():
            """将符合条件的图片剪切到总的图片文件夹下"""
            files = os.listdir(MODIFY_FILE_PATH)
            for file in files:
                shutil.move(MODIFY_FILE_PATH+file, MOVE_FILE_PATH)
    
        @staticmethod
        def check_label():
            """检查标签值是否满足三位的格式及在指定的范围内"""
    
            modifies = []
            data = pd.read_excel('menu.xlsx', skiprows=1)
            max_label = max(data['Id'])
            with open(MODIFY_JSON_NAME, 'r') as f:
                json_dict = json.load(f)
                for k, val in json_dict.items():
                    ls = len(json_dict[k]["regions"])
                    for l in range(ls):
                        try:
                            if (len(json_dict[k]['regions'][str(l)]['region_attributes']['label']) != 3) or \
                                    (int(json_dict[k]['regions'][str(l)]['region_attributes']['label']) < 1) or \
                                    (int(json_dict[k]['regions'][str(l)]['region_attributes']['label']) > max_label):
                                modifies.append(k[4: 8] + str(l))
                        except KeyError:
                            modifies.append(k[4: 8] + '_' + str(l))
    
            if len(modifies) == 0:
                print("所有图片均符合要求!")
                with open(ORIGIN_JSON_NAME, 'r') as o:
                    json_origin = json.load(o)
                    with open(MODIFY_JSON_NAME, 'r') as m:
                        json_modify = json.load(m)
                        for k, val in json_modify.items():
                            json_origin[k] = val
    
                with open(ORIGIN_JSON_NAME, 'w') as f:
                    f.write(json.dumps(json_origin))
                Check.move_file()
            else:
                print("需要修正的图片序号为:\n", modifies)
    
        @staticmethod
        def look_index(idx):
            # 寻找包含特定编号的图片,返回一个列表
            indexs = []
            with open(ORIGIN_JSON_NAME, 'r') as f:
                json_dict = json.load(f)
                for k, val in json_dict.items():
                    ls = len(json_dict[k]["regions"])
                    for l in range(ls):
                        if json_dict[k]['regions'][str(l)]['region_attributes']['label'] == idx:
                            indexs.append(k[4: 8])
    
            print("包含标签值为{}的图片编号为:".format(idx))
            print(indexs)
    
    
    class Operate(object):
        """对数据进行一些操作"""
    
        #######################################################################################
        # shuffler_data():将原始数据集按8:2的操作划分为训练数据集和测试数据集
        # feature_map():返回两个字典:{label: name}和{label: price}
        # counts(name_dict):统计已有菜品的种类数,以及每种菜品出现的次数
        # visualize(var_dict, name_dict):可视化统计结果,返回筛选出来的菜品标签值
        # get_label(lists):提取特定的标签值
        # delete_photo(paths, file_name_list):删除指定序号的图片
        # choose(paths, file_name_list):筛选指定序号的图片
        # divide_train_and_val(start, end):将数据集划分为训练数据集和测试数据集
        # print_name(l, name_dict):输出标签值对应的中文名"
        #######################################################################################
    
        @staticmethod
        def shuffler_data():
            train_data = {}
            validation_data = {}
            test_data = {}
            with open(ORIGIN_JSON_NAME, 'r', encoding='utf-8') as f:
                json_dict = json.load(f)
                cnt = 1
    
                for k, val in json_dict.items():
                    if cnt % 10 == 3:
                        validation_data[k] = val
                    elif cnt % 10 == 7:
                        test_data[k] = val
                    else:
                        train_data[k] = val
                    cnt = cnt + 1
            with open('./train/via_region_data.json', 'w', encoding='utf-8') as f:
                f.write(json.dumps(train_data, ensure_ascii=False))
            with open('./val/via_region_data.json', 'w', encoding='utf-8') as f:
                f.write(json.dumps(validation_data, ensure_ascii=False))
            with open('./test/via_region_data.json', 'w', encoding='utf-8') as f:
                f.write(json.dumps(test_data, ensure_ascii=False))
    
            cnt = 1
            files = os.listdir(MOVE_FILE_PATH)
            for file in files:
                if cnt % 10 == 3:
                    shutil.copy(MOVE_FILE_PATH+file, './val/')
                elif cnt % 10 == 7:
                    shutil.copy(MOVE_FILE_PATH+file, './test/')
                else:
                    shutil.copy(MOVE_FILE_PATH+file, './train/')
                cnt = cnt + 1
    
        @staticmethod
        def feature_map():
            """
            read_path: Excel文件路径
            :return: 映射字典
            """
            data = pd.read_excel(MENU_EXCEL_NAME, skiprows=1)
            labels = list(data['Id'])
            labels = [str(label).zfill(3) for label in labels]  # 标签值
            names = list(data['Name'])  # 菜品名
            prices = list(data['Price'])  # 价格
            print("总标签值:\n", labels)
            print("总菜品名:\n", names)
            print("价格:\n", prices)
            print("-" * 200)
            na_dict = {}  # 每个标签值对应的菜品名
            pri_map = {}  # 每个标签值对应的菜品价格
            for i in range(len(labels)):
                na_dict[labels[i]] = names[i]
                pri_map[labels[i]] = prices[i]
    
            return na_dict, pri_map
    
        @staticmethod
        def counts(name_dict):
            """
            统计已有菜品的种类数,以及每种菜品出现的次数
            read_path: 文件路径
            :param name_dict: 从feature_map的输出获得,菜品名映射字典
            :return
                exist_labels 目前拥有的菜品种类
                num_per_food 每种菜品对应的数量
            """
    
            with open('./train/via_region_data.json', 'r') as f:
                json_dict = json.load(f, object_pairs_hook=OrderedDict)
                total_train = []
                for k, val in json_dict.items():
                    ls = len(json_dict[k]['regions'])
                    for l in range(ls):
                        total_train.append(json_dict[k]['regions'][str(l)]['region_attributes']['label'])
    
            with open('./val/via_region_data.json', 'r') as f:
                json_dict = json.load(f, object_pairs_hook=OrderedDict)
                total_val = []
                for k, val in json_dict.items():
                    ls = len(json_dict[k]['regions'])
                    for l in range(ls):
                        total_val.append(json_dict[k]['regions'][str(l)]['region_attributes']['label'])
    
            with open('./test/via_region_data.json', 'r') as f:
                json_dict = json.load(f, object_pairs_hook=OrderedDict)
                total_test = []
                for k, val in json_dict.items():
                    ls = len(json_dict[k]['regions'])
                    for l in range(ls):
                        total_test.append(json_dict[k]['regions'][str(l)]['region_attributes']['label'])
    
            value_cut_train = {}
            for t in total_train:
                value_cut_train[t] = value_cut_train.get(t, 0) + 1
    
            value_cut_val = {}
            for t in total_val:
                value_cut_val[t] = value_cut_val.get(t, 0) + 1
    
            value_cut_test = {}
            for t in total_test:
                value_cut_test[t] = value_cut_test.get(t, 0) + 1
    
            num_per_food_train = sorted(value_cut_train.items(), key=lambda v: v[1], reverse=False)
            num_per_food_val = sorted(value_cut_val.items(), key=lambda v: v[1], reverse=False)
            num_per_food_test = sorted(value_cut_test.items(), key=lambda v: v[1], reverse=False)
    
            print('num_per_food_train:\n', num_per_food_train)  # 训练数据集中每种菜品对应的数量
            print('num_per_food_val:\n', num_per_food_val)  # 训练数据集中每种菜品对应的数量
            print('num_per_food_test:\n', num_per_food_test)  # 训练数据集中每种菜品对应的数量
            print('-' * 100)
    
            exist_labels_train = [v for v in value_cut_train.keys()]
            exist_labels_val = [v for v in value_cut_val.keys()]
            exist_labels_test = [v for v in value_cut_test.keys()]
    
            print("exist_labels_train:\n", exist_labels_train)
            print("exist_labels_val:\n", exist_labels_val)
            print("exist_labels_test:\n", exist_labels_test)
            print('-' * 100)
    
            chinese_dict_train = {}
            for i in range(len(exist_labels_train)):
                chinese_dict_train[i] = name_dict[exist_labels_train[i]]
            names_train = list(chinese_dict_train.values())
            names_train.insert(0, '背景')
            print("训练数据集中已有的菜品种类(含背景):\n", names_train)
            print("训练数据集中总的菜品数量为: ", len(exist_labels_train))
            print('-' * 100)
    
            chinese_dict_val = {}
            for i in range(len(exist_labels_val)):
                chinese_dict_val[i] = name_dict[exist_labels_val[i]]
            names_val = list(chinese_dict_val.values())
            print("验证数据集中已有的菜品种类:\n", names_val)
            print("验证数据集中总的菜品数量为: ", len(exist_labels_val))
    
            chinese_dict_test = {}
            for i in range(len(exist_labels_test)):
                chinese_dict_test[i] = name_dict[exist_labels_test[i]]
            names_test = list(chinese_dict_test.values())
            print("测试数据集中已有的菜品种类:\n", names_test)
            print("测试数据集中总的菜品数量为: ", len(exist_labels_test))
    
            return num_per_food_train, num_per_food_val, num_per_food_test, names_val, names_test
    
        @staticmethod
        def visualize(train_dict, val_dict, test_dict, name_dict, nv, nt):
            """
            数据可视化
            var_dict: 从counts()的输出获得,每种菜品对应的数量num_per_food
            name_dic: 从feature_map()的输出获得,菜品名映射字典
            :return temp: 筛选出来的菜品标签值,用一个列表保存
            """
    
            # train
            keys, values, labels, names = [], [], [], ['背景']
            for i in range(len(train_dict)):
                if train_dict[i][1] >= MORE_THAN_NUM:
                    labels.append(train_dict[i][0])
                    names.append(name_dict[train_dict[i][0]])
                keys.append(name_dict[train_dict[i][0]])
                values.append(train_dict[i][1])
            print('训练数据集中样本数超过' + str(MORE_THAN_NUM) + '的标签值有{}种,即\n{}'.format(len(labels), labels))
            print("对应的中文标签为:", names)
    
            list_nv, list_nt = [], []
            for n in names:
                if n not in nv and n != '背景':
                    list_nv.append(n)
                if n not in nt and n != '背景':
                    list_nt.append(n)
            if len(list_nv) != 0:
                print("验证集中缺少目标菜品有:", list_nv)
            else:
                print("验证集中覆盖了所有的目标")
            if len(list_nt) != 0:
                print("测试集中缺少目标菜品有:", list_nt)
            else:
                print("测试集中覆盖了所有的目标")
    
            plt.figure(figsize=(12, 12))
            # plt.subplots_adjust(left=0.09, right=1, wspace=0.25, hspace=0.25, bottom=0.13, top=0.91)
            plt.barh(keys, values, color='steelblue', alpha=0.8)
            plt.yticks(fontsize=5)
            plt.title(str(datetime.date.today()) + u"训练数据菜品数量分布图")
            plt.ylabel(u'菜品种类')
            plt.xlabel(u'菜品数量')
            plt.tight_layout()
            for x, y in enumerate(values):
                plt.text(y + 0.3, x - 0.3, '%s' % y, fontsize=8)
            plt.savefig('./statistics_graph/' + str(datetime.date.today()) + u"训练数据菜品数量分布图" + '.png')
            plt.show()
    
            # val
            keys, values = [], []
            for i in range(len(val_dict)):
                keys.append(name_dict[val_dict[i][0]])
                values.append(val_dict[i][1])
            plt.figure(figsize=(12, 12))
            plt.barh(keys, values, color='steelblue', alpha=0.8)
            plt.yticks(fontsize=5)
            plt.title(str(datetime.date.today()) + u"验证数据菜品数量分布图")
            plt.ylabel(u'菜品种类')
            plt.xlabel(u'菜品数量')
            plt.tight_layout()
            for x, y in enumerate(values):
                plt.text(y + 0.3, x - 0.3, '%s' % y, fontsize=8)
            plt.savefig('./statistics_graph/' + str(datetime.date.today()) + u"验证数据菜品数量分布图" + '.png')
            plt.show()
    
            # test
            keys, values = [], []
            for i in range(len(test_dict)):
                keys.append(name_dict[test_dict[i][0]])
                values.append(test_dict[i][1])
            plt.figure(figsize=(12, 12))
            plt.barh(keys, values, color='steelblue', alpha=0.8)
            plt.yticks(fontsize=5)
            plt.title(str(datetime.date.today()) + u"测试数据菜品数量分布图")
            plt.ylabel(u'菜品种类')
            plt.xlabel(u'菜品数量')
            plt.tight_layout()
            for x, y in enumerate(values):
                plt.text(y + 0.3, x - 0.3, '%s' % y, fontsize=8)
            plt.savefig('./statistics_graph/' + str(datetime.date.today()) + u"测试数据菜品数量分布图" + '.png')
            plt.show()
    
            return labels
    
        @staticmethod
        def filter_data(json_path, filter_list, types):
            choice_dict = {}
            idx = []
            with open(json_path, 'r') as f:
                json_dict = json.load(f)
                nums = len(json_dict)
                for k, val in json_dict.items():
                    cnt = 0  # 统计出现目标标签的次数
                    ls = len(json_dict[k]["regions"])
                    for l in range(ls):
                        if json_dict[k]["regions"][str(l)]["region_attributes"]["label"] in filter_list:
                            cnt += 1
                        else:
                            json_dict[k]["regions"].pop(str(l))
                    if cnt >= 1:
                        choice_dict[k] = json_dict[k]
                    else:
                        idx.append(k)
                print("共有{}数据{}张".format(types, (nums - len(idx))))
                print("需要删除的图片序号:\n", idx)
                print("-" * 100)
    
            with open(json_path, 'w') as f:
                f.write(json.dumps(choice_dict))
    
            return idx
    
        @staticmethod
        def get_label(lists):
            """
            提取特定的标签值
            :param lists 从visualize()处获得,保存筛选出的菜品labels
            :return idx_ 返回待删除的图片文件名
            """
            idx_trian = Operate.filter_data(json_path='./train/via_region_data.json', filter_list=lists, types="训练")
            idx_val = Operate.filter_data(json_path='./val/via_region_data.json', filter_list=lists, types="验证")
            idx_test = Operate.filter_data(json_path='./test/via_region_data.json', filter_list=lists, types="测试")
    
            return idx_trian, idx_val, idx_test
    
        @staticmethod
        def delete_photo(file_path, file_name_list):
            """
            删除指定序号的图片
            file_name_list 待删除文件名列表,由get_label()处获得输入idx
            """
            files = os.listdir(file_path)
            for i, f in enumerate(files):
                if f[0: 8] in file_name_list:
                    os.remove(file_path + f)
                    print("Success to delete picture {} !".format(f))
    
        @staticmethod
        def choose_photo(file_name_list):
            """
            筛选指定序号的图片
            file_name_list 待删除文件名列表,由get_label()处获得输入idx
            """
            files = os.listdir('./train')
            for i, f in enumerate(files):
                if f[0: 8] not in file_name_list:
                    shutil.copyfile(MOVE_FILE_PATH+f, OUTPUT_FILE_PATH+f)
                    print("Success to copy picture {} to output_file directory!".format(f[0: 8]))
    
        @staticmethod
        def divide_train_and_val(start, end):
            """
            将数据集划分为训练数据集和测试数据集
            :param start: 起始序号
            :param end: 结尾序号
            """
            via = {}
            with open(OUTPUT_JSON_NAME, 'r', encoding='utf-8') as f:
                json_dict = json.load(f)
                cnt = 1
                for k, val in json_dict.items():
                    if (cnt >= start) and (cnt <= end):
                        via[k] = val
                    cnt += 1
            with open(TRAIN_VAL_DIVIDE_JSON_NAME, 'w', encoding='utf-8') as f:
                f.write(json.dumps(via, ensure_ascii=False))
    
        @staticmethod
        def print_name(l, name_dict):
            """输出标签值对应的中文名"""
            ln = []
            for i in range(len(l)):
                ln.append(name_dict[l[i]])
            print("**30**:\n", ln)
    
        @staticmethod
        def turn_chinese(write_path):
            """
            将标签值映射为中文
            """
            data = pd.read_excel(MENU_EXCEL_NAME, skiprows=1)
            labels = list(data['序号'])
            labels = [str(label).zfill(3) for label in labels]
            names = list(data['菜名'])
            name_dict = {}
            for i in range(len(labels)):
                name_dict[labels[i]] = names[i]
    
            with open(OUTPUT_JSON_NAME, 'r') as f:
                json_dict = json.load(f)
                for k, val in json_dict.items():
                    ls = len(json_dict[k]['regions'])
                    for l in range(ls):
                        json_dict[k]['regions'][str(l)]['region_attributes']['label'] = \
                            name_dict[json_dict[k]['regions'][str(l)]['region_attributes']['label']]
            with open(write_path, 'w', encoding="utf-8") as f:
                # json_dict = sorted(zip(json_dict.values(), json_dict.keys()))
                print(json_dict.keys())
                f.write(json.dumps(json_dict, ensure_ascii=False))
    
    
    def main():
        # modify = Modify()
        # modify.rename_key()
        # modify.rename_file_name()
        # Check().check_label()
    
        # operate = Operate()
        # operate.shuffler_data()
        # label_name, _ = operate.feature_map()
        # number_per_food_train, number_per_food_val, number_per_food_test, nv, nt = operate.counts(label_name)
        # choose_label = \
        #     operate.visualize(number_per_food_train, number_per_food_val, number_per_food_test, label_name, nv, nt)
        # train_list, val_list, test_list = operate.get_label(choose_label)
        # operate.delete_photo('./train', train_list)
        # operate.delete_photo('./val', val_list)
        # operate.delete_photo('./test', test_list)
    
    
        print('Success Running!')
    
    
    if __name__ == '__main__':
        main()
    

    有问题欢迎添加微信号:cv_huber或扫描关注以下二维码,备注“CSDN”,了解每日AI最新资讯。
    在这里插入图片描述

    展开全文
  • 今天小编就为大家分享一篇利用python修改json文件的value方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • shell 修改 JSON文件

    千次阅读 2016-05-30 20:11:51
    场景:  有时,在运维 或者 开发中 不得不 做 这样一件事情,定时 修改文件... ,手动修改JSON文件中的数字IP,造成很麻烦 解决方案:  shell 定时,每5分钟 监控 其IP是否变化,若变化 ,则修改其JSON 文件
  • python修改json文件信息

    2020-12-22 14:57:23
    因为json文件里的图片路径有一些中文或者其他字符,在训练过程中会认为这些图片存在问题。不容易处理,可以将图片路径修改。 import json import os for JSON in os.listdir('json'): with open('json/' + JSON, ...
  • python修改json中的文件内容并保存

    千次阅读 2019-09-02 10:46:39
    json文件读取与修改 说白了就是一种数据转换格式,可以用来存储、传递信息的中转站,下面举个例子来了解一下: import json #导入json头文件 import os,sys json_path = 'D:\\chuangxin\\test_json\\params.json' #...
  • * 从文件中读取信息,并转换为相应对象 * @return */ public static FileDto readFileDto (){ File file = new File( "c://test.json" ); if (!file.exists()){ return null ; } FileDto dto...
  • 利用python修改json文件的value

    万次阅读 2018-04-25 17:11:32
    为此写了修改json文件的python脚本供工程后续调用。 代码如下:# coding=utf-8 //设置文本格式 import os,sys import json def get_new_json(filepath,key,value): key_ = key.split("."...
  • Unity修改Json文件中的数据

    千次阅读 2019-12-04 17:28:45
    在上一篇博客中我们已经使用了读取json文件中数据的方法,那么在这篇文章中我们主要来使用一下修改json文件中数据的方法。 我们可以在上次的代码中添加一个方法,用来修改数据 //写入方法 private void ...
  • Java 操作json文件的例子,对json数据进行读娶添加、删除、修改等操作,下载源码后,重点参见JsonConvert.java文件,  读取nameID.txt文件中的NAMEID字段(key)对应值(value)并存储,读取NAMEID对应值,读取原始...
  • -导入之前项目根目录下的project.config.json文件: { "description": "A WePY project", "setting": { "urlCheck": true, "es6": false, "postcss": false, "minified": false }, "compileType": ...
  • jsoncpp读取修改json文件

    千次阅读 2019-01-15 13:34:55
    #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;opencv2\opencv.hpp&gt;...json/...
  • 利用python3修改json文件的指定的value

    千次阅读 2019-06-19 11:00:28
    需求:读取本地的json 文件,并修改制定的键的值,本文主要改写{'resType':'rest'} 成{'resType':'rect'} 本函数需要给定读取文件的路径以及保存的文件的路径,直接上代码。有问题请留言 # import module import os ...
  • python批量修改json文件中的指定字符win10 win10 在linux里一行代码就可以直接替换,但是windows我没找到这个功能,就只能用python了 代码如下: 实现了遍历目录下所有json文件,然后替换所有标签为lesionArea的...
  • 很坑,一开始就是单纯的引入json文件,发现打包后修改json文件但是并未更新,最后又换成了还使用axios引入,但是会有异步的问题一直解决不了。后来发现了个简单的办法。。 把json文件改成js,里面的放的还是json,...
  • Python学习笔记 --- python实现修改json文件
  • 在 nodeJs 中修改 json 文件中的数据

    千次阅读 2019-10-15 14:24:35
    // 注意,在内部读取文件不能访问 json 文件中的属性,不知道为什么,所以在外部读取文件 const detailArr = require('./data/Details_shoplist_info.json'); app.get('/api/modify_details_info',function (req, ...
  • python修改json文件的value

    千次阅读 2019-06-23 14:25:50
    #!/usr/bin/python # coding=utf-8 ...import json import argparse reload(sys) sys.setdefaultencoding('utf-8') def PrepareParser(): result=argparse.ArgumentParser(description="get data from ...
  • import net.sf.json.JSONArray; import net.sf.json.JSONObject;...src/main/webapp/json/bottomFgs.json"; String jsonStr = JsonUtils.readJsonFile(path); JSONArray jsonArray = JSO...
  • 一、json文件简介 1、json文件 2、json与其他存储数据方式比较 二、C++操作json文件 1、jsoncpp 库下载 2、C++从字符串中读取json 3、C++从文件中读取json 4、C++写入json文件 5、主函数 附:jsoncpp库配置...
  • php 读写json文件。追加,修改json

    万次阅读 2017-08-19 16:38:55
    // 追加写入用户名下文件 $code="001";//动态数据 $json_string = file_get_contents("text.json");// 从文件中读取数据到PHP变量 $data = json_decode($json_string,true);// 把JSON字符串转成PHP数组 $data[$...
  • Java对Json文件的读取与修改

    千次阅读 2019-04-13 07:13:44
    Json文件读取为Json字符串--->根据JsonPath修改对应Path的value值---->格式化Json字符串---->将格式化后的Json字符串写入指定Json文件中 2:代码目录结构 |——cn.Demo.ReadJson //Package |————...
  • using Newtonsoft.Json; JsonSerializer serialiser = new JsonSerializer(); string newContent = string.Empty; using (StreamReader reader = new StreamReader(file.FullName)) ...
  • 利用jquery的post功能获取json内容并作后续处理, 本例子需要在web环境下跑 本例子需要在web环境下跑 本例子需要在web环境下跑

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 400,612
精华内容 160,244
关键字:

修改json文件内容