【问题标题】:Python output to valid JSON from a FOR loop从 FOR 循环到有效 JSON 的 Python 输出
【发布时间】:2017-08-08 10:05:21
【问题描述】:

好的,伙计们,我是 Python 新手。

我已经开始在工作中使用它通过 Boto3 查询 AWS

我的第一个任务是构建一个脚本来使用 MFA 查询 AWS 中的用户,初始脚本可以运行并返回所有没有 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"
  }
]

【问题讨论】:

    标签: python json loops boto3


    【解决方案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)
    

    【讨论】:

    • 几乎工作,但似乎正在复制和乘以结果创建一个巨大的列表
    • @MatthewWhite 嗯,你能分享一些 iam.list_users()['Users'] 中的数据吗
    • 恐怕我不能,但我认为它确实有效,基本上我的脚本在 AWS 中扮演角色并通过几个账户,然后返回每个账户的结果,所以它正在关闭每个帐户的 json 对象,所以我相信你的修复工作,谢谢
    • @MatthewWhite 很高兴我能帮上忙。祝你好运!
    【解决方案2】:

    几乎工作,但似乎复制和乘以结果创建一个巨大的列表

    [
     {
        "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"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多