2017-08-08 91 views
0

好的夥計們,我是Python新手。Python輸出爲FOR循環中的有效JSON

我一直在使用它在工作中查詢AWS與Boto3

我的第一個任務是建立一個腳本來查詢用戶在AWS與MFA開始,最初的腳本工作,並返回其不具有的所有用戶MFA設備,真的很簡單。

我想要做的是將列表導出到JSON文件,這樣我就可以使用Angular應用程序中的數據來顯示報告。

當我運行代碼時,我得到一個JSON輸出,但它不正確,它在每個對象後面缺少逗號和關閉JSON,而不是創建完整的單一JSON輸出。

我的代碼如下:

import json 
# boto code here 

for user in iam.list_users()['Users']: 
    mfa = iam.list_mfa_devices(UserName=user['UserName']) 
    if len(mfa['MFADevices']) == 0: 
     q = [] 

     q.append({"account": item['alias'], "Username": 
user['UserName'], "MFA": "No MFA Enabled"}) 
     print json.dumps(q, indent=4) 

結果格式爲:

[ 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "account" 
    } 
] 
[ 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "account" 
    } 
] 

回答

1

有許多有效的JSON的格式。其中之一是使用詞典列表:

[{},{}]

我建議你試試這個:

import json 
# boto code here 
q = [] 
for user in iam.list_users()['Users']: 
    mfa = iam.list_mfa_devices(UserName=user['UserName']) 
    if len(mfa['MFADevices']) == 0: 
     q.append({"account": item['alias'], "Username": 
user['UserName'], "MFA": "No MFA Enabled"}) 

print json.dumps(q, indent=4) 
+0

近乎成功,但似乎是複製和乘以結果creatin ga巨大的列表 –

+0

@MatthewWhite你可以分享一些數據在iam.list_users()['用戶'] –

+0

恐怕我不能,但我認爲它實際上工作,基本上我的腳本假定角色在AWS和經過幾個帳戶,然後返回每個帳戶的結果,所以它關閉了每個帳戶的json對象,所以我相信你的修復工作,謝謝 –

0

近的工作,但似乎被複制和乘以創造一個巨大的名單的結果

[ 
{ 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
} 
] 
[ 
{ 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
}, 
{ 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
} 
] 
[ 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    }, 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    }, 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    } 
] 
[ 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    }, 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    }, 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    }, 
    { 
    "Username": "Username", 
    "MFA": "No MFA Enabled", 
    "account": "Account" 
    } 
]