python-3.x 替换多个文件的json文件中特定键的值

yxyvkwin  于 2022-12-01  发布在  Python
关注(0)|答案(1)|浏览(146)

我正在准备一个测试数据的功能测试。我有1000 json文件与以下相同的结构在本地文件夹。
我需要从所有地方替换两个key,并创建1000个不同的json。需要替换的Key是“f_ID”:“80510926”和“f_Ctb”:“10333”的“f_ID”:“80510926”出现在除“f_Ctb”之外的所有数组中:“10333”只出现一次。
在所有档案中,取代的值可以是1到100的连续数字。
有人能建议我们如何做这个python来创建1000个文件吗

{
  "t_A": [
    {
      "f_ID": "80510926",
      "f_Ctb": "10333",
      "f_isPasswordProtected": "False"
    }
  ],
  "t_B": [
    {
      "f_ID": "80510926",
      "f_B_Company_ID": "10333",
      "f_B_ID": "1",
      "f_ArriveDate": "20151001 151535.775"
    },
    {
      "f_ID": "80510926",
      "f_B_Company_ID": "10333",
      "f_B_ID": "1700",
      "f_ArriveDate": "20151001 151535.775"
    }
  ],
  "t_C": [
    {
      "f_ID": "80510926",
      "f_Set_Code": "TRBC      ",
      "f_Industry_Code": "10        ",
      "f_InsertDate": "20151001 151535.775"
    },
  ],
  "t_D": [
    {
      "f_ID": "80510926",
      "f_Headline": "Global Reinsurance: Questions and themes into Monte Carlo",
      "f_Synopsis": ""
    }
  ]
}
irlmq6kh

irlmq6kh1#

下面是一个在文件夹中运行的解决方案,其中有1000个json文件。它将读取所有的json文件,并将f_IDf_Ctb替换为计数,然后将具有相同文件名的文件写入输出文件夹。

import os
import json

all_files = os.listdir()
json_files = {f: f for f in all_files if f.endswith(".json")}
json_files_keys = list(json_files.keys())
json_files_keys.sort()

OUTPUT_FOLDER = "output"
if not os.path.exists(OUTPUT_FOLDER):
    os.mkdir(OUTPUT_FOLDER)

for file_name in json_files_keys:
    f_read = open(file_name, "r").read()
    data = json.loads(f_read)
    output_data = {}
    count = 1
    for key, val_list in data.items():
        for nest_dict in val_list:
            if "f_ID" in nest_dict:
                nest_dict["f_ID"] = count
            if "f_Ctb" in nest_dict:
                nest_dict["f_Ctb"] = count
            if key in output_data:
                output_data[key].append(nest_dict)
            else:
                output_data[key] = [nest_dict]
        else:
            output_data[key] = val_list
        count += 1
    output_file = open(f"{OUTPUT_FOLDER}/{file_name}", "w")
    output_file.write(json.dumps(output_data))
    output_file.close()

相关问题