2017-01-10 1 views
0

jsonファイルを辞書と値で読み取っていますが、jsonファイルを検索するときに変数をクエリ項目として使用することに挑戦しています。プリセットクエリを使用してJSONファイルデータにアクセスする -

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]) 

それはすべてのエラーを避けるべきです。

関連する問題