在一个函数中读取 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)
在 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)