在 python 中,我如何在一個函式中讀取一個 json,以訪問另一個函式的值?我只想一次訪問一個值(“場景”)。
示例 json -
{
"scenario_A": {
"type": "animal",
"name": "alligator",
"ext": ".jpg",
},
"scenario_B": {
"type": "fruit",
"name": "banana",
"ext": ".png",
}
}
示例腳本 - 結果應該是“鱷魚”檔案夾中 .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:“函式”物件不可下標。
uj5u.com熱心網友回復:
您的代碼存在一些問題。您需要分配一個變數作為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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420490.html
標籤:
