2017-01-10 39 views
0

我正在閱讀帶有字典和值的json文件,但是我正在爭取在搜索json文件時使用變量作爲查詢項目。使用預設查詢訪問JSON文件數據 - Python

x = value_cloud = "%s%s%s" % (["L1_METADATA_FILE"],["IMAGE_ATTRIBUTES"],["CLOUD_COVER"]) 

    for meta in filelist(dir): 
     with open (meta) as data_file: 
      data = json.load(data_file) 
     cloud = str(data[x]) 

我得到的錯誤是:

Traceback (most recent call last): 
    File "E:\SAMPLE\Sample_Script_AWS\L8_TOA_using_gdal_rasterio.py", line 96, in <module> 
    cloud = str(data[x]) 
    KeyError: "['L1_METADATA_FILE']['IMAGE_ATTRIBUTES']['CLOUD_COVER']" 

什麼其實我想要的是搜索變量中的關鍵JSON文件... 的按鍵都在JSON文件存在,因爲當我運行以下我得到正確的輸出。

cloud = str(data["L1_METADATA_FILE"]["IMAGE_ATTRIBUTES"]["CLOUD_COVER"]) 
    print cloud 

我的Python的知識比較粗略,而我傳遞變量通過作爲一個字符串,而不是一個表達式或對象,因此它給我的錯誤。什麼是創建變量並調用我想要的鍵的正確方法。

提前致謝!

+0

只需檢查 - ([「L1_METADATA_FILE」],[「IMAGE_ATTRIBUTES」],[「CLOUD_COVER」])..逗號分隔.. – Harsha

+0

@HarshaBiyani逗號分隔的格式爲「%s%s%s 「%聲明...但我知道它創建了一個字符串,我不認爲這是正確的變量類型... –

+1

您的密鑰最終包括括號中的字符串,這是不好的。你可以直接在自己的變量中使用每個鍵,比如'x,y,z =「L1_METADATA_FILE」,「IMAGE_ATTRIBUTES」,「CLOUD_COVER」',然後'cloud = str(data [x] [y] [z])' ? – coralvanda

回答

0

您的密鑰最終包括括號中的字符串,哪個錯誤來自哪裏。如果你使用它自己的變量中的每個關鍵,就像這樣:

x, y, z = "L1_METADATA_FILE", "IMAGE_ATTRIBUTES" , "CLOUD_COVER" 

然後:

cloud = str(data[x][y][z]) 

應該避免任何錯誤。