在一个函数中读取 JSON 以在其他函数中使用值

Reading a JSON in one function to use values in other functions

在 python 中,如何读取一个函数中的 json,以便为另一个函数访问它的值?我一次只想访问一个值 ('Scenario')。

例子json-

{
    "scenario_A": {
        "type": "animal",
        "name": "alligator",
        "ext":  ".jpg",
    },

    "scenario_B": {
        "type": "fruit",
        "name": "banana",
        "ext":  ".png",
    }
}

示例脚本 - 结果应该是 'alligator' 文件夹中 .jpg 数量的打印语句

import json

json_path = "C:\config.json"
image_dir = "C:\images"
scenario_type = "scenario_A"

def process(load_json, find_images)
    load_json(json_path, scenario_type)
    find_images(image_dir, load_json)

def load_json(json_path, scenario_type):
    json_read = json.load(open(json_path))
    return json_read[scenario_type]
  
def find_images(image_dir,load_json):
    images = [f for f in os.listdir(os.path.join(image_dir, load_json["name"]))
                      if f.endswith(load_json["ext"])]
    print(f"\n{len(images)} total")

if __name__ == "__main__":
    process()

但我得到的是 -

TypeError: 'function' object is not subscriptable.

您的代码存在一些问题。您需要指定一个变量作为 load_json 函数的输出,然后使用它代替函数。

您还应该明确地将所有变量传递给函数以确保代码可重复执行。

编辑后的代码见下文。

import json

json_path = "C:\config.json"
image_dir = "C:\images"
scenario_type = "scenario_A"

def process(json_path, image_dir, scenario_type):
    current_json = load_json(json_path, scenario_type)
    find_images(image_dir, current_json)

def load_json(json_path, scenario_type):
    json_read = json.load(open(json_path))
    return json_read[scenario_type]
  
def find_images(image_dir, json):
    images = [f for f in os.listdir(os.path.join(image_dir, json["name"]))
                      if f.endswith(json["ext"])]
    print(f"\n{len(images)} total")

if __name__ == "__main__":
    process(json_path, image_dir, scenario_type)