打印出包含未知内容的Python列表

时间:2017-07-14 17:57:30

标签: python json

def enumerate_all_config_objects(baseDN):
    url = 'https://www.AwebsiteThatIWontProvide.com'
    payload={"ObjectDN":baseDN,"Pattern":"*aws*","Pattern":"*jkb*"}
    r = requests.post(url, verify='/PathToKeyForVerification/', headers=headers,data=json.dumps(payload))
    response = r.json()
    status = r.status_code
    print " "
    print "Returned status code:", status
    print " "
    return response ['Objects'][0]['GUID']

输出:

返回状态代码:200

{11871545-8c5b-4c3c-9609-7372fae1add5}

处理完成,退出代码为0

我试图仅返回" GUID"来自json请求的信息。这是有效的(1187154 ...),当我在['对象']和[' guid']之间的索引中输入值时,每个值都从列表中成功生成。我的问题是,即使我打印出实际响应以验证输出是否正确,最终脚本也不应要求将任何内容转储到CSV文件。我必须在记忆中执行一切。我需要创建的下一个函数将使用返回的GUID值并使用这些值查询服务器。

如何从enumerate_all_config_objects的输出中显示列表中的项目?我想先将它们打印出来进行故障排除。然后我将注释掉这个功能,并让第二个函数从该列表中提取每个值并使用它。

两个问题:

  1. 打印出始终包含未知数量条目的列表。
  2. 创建另一个函数来引用/使用该列表中的值。
  3. 列表已正确填充,我已对此进行了验证。我只是不知道如何访问它或打印它。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你希望做的事情如下:

def enumerate_all_config_objects(baseDN):
    url = 'https://www.AwebsiteThatIWontProvide.com'
    payload = {"ObjectDN": baseDN, "Pattern": "*aws*", "Pattern": "*jkb*"}
    r = requests.post(url, verify='/PathToKeyForVerification/', headers=headers,data=json.dumps(payload))
    response = r.json()
    status = r.status_code
    return map(lambda x: x["GUID"] , response['Objects'])

def use_guids(guid_list):
    #do_stuff, for example, to show the guids:
    for guid in guid_list:
        print(guid)

use_guids(enumerate_all_config_objects(baseDN=<replaceWithYourParameter>))

编辑:要清除评论中的问题,我决定嘲笑您说已经有效的API调用

def enumerate_all_config_objects():
    foo = {"GUID" : 1}
    bar = {"GUID" : 2}
    baz = {"GUID" : 3}
    response = {"Objects": [foo, bar, baz] }
    mapped = list(map(lambda x: x["GUID"] , response['Objects']))
    return map(lambda x: x["GUID"] , response['Objects'])

def use_guids(guid_list):
    #do_stuff, for example, to show the guids:
    for guid in guid_list:
        print(guid)

use_guids(enumerate_all_config_objects())

打印出来

1
2
3

如果要使用从函数计算的值,则需要使用return关键字。 例如return map(lambda x: x["GUID"] , response['Objects']),在这个新示例中将返回包含[1, 2, 3]的地图对象。然后可以使用此返回值,例如在我的第一个示例中将其传递给另一个函数。

在上面的例子中,列表被传递给use_guids函数,该函数打印列表的内容。

编辑2 :如果你真的坚持要求一个处理一个 GUID的函数,你可以这样做:

def enumerate_all_config_objects(baseDN):
    url = 'https://www.AwebsiteThatIWontProvide.com'
    payload = {"ObjectDN": baseDN, "Pattern": "*aws*", "Pattern": "*jkb*"}
    r = requests.post(url, verify='/PathToKeyForVerification/', headers=headers,data=json.dumps(payload))
    response = r.json()
    status = r.status_code
    for obj in response['Objects']:
        use_guid(obj["GUID"])


def use_guid(guid):
    print(guid)
    # Do some other stuff.
    # ...

enumerate_all_config_objects(baseDN=<replaceWithYourParameter>)