发布
社区首页 >问答首页 >循环只迭代一次

循环只迭代一次
EN

Stack Overflow用户
提问于 2018-01-04 23:13:33
回答 1查看 97关注 0票数 0

我正在使用pyvmomi模块从我们的vCenter导出数据。我非常接近于获得所需的输出,但我的脚本只迭代一次。为什么?

如果我在更新字典之前在print(d)循环中使用for,它将打印所有数据。

脚本摘要:

代码语言:javascript
代码运行次数:0
复制
top_dict = {"data": []}    

def get_obj(content, vimtype, name=None):
    return [item for item in content.viewManager.CreateContainerView(
        content.rootFolder, [vimtype], recursive=True).view]

## MAIN ##
...
content = si.RetrieveContent()
d = {}
idnum = 0
for dc in get_obj(content, vim.Datacenter):
    for cluster in get_obj(content, vim.ClusterComputeResource):
        for h in cluster.host:
            host_wwpn1 = ''
            for adaptr in h.config.storageDevice.hostBusAdapter:
                if hasattr(adaptr, 'portWorldWideName'):
                    if host_wwpn1 == '':
                        host_wwpn1 = (hex(adaptr.portWorldWideName)[2:18])
                    else:
                        host_wwpn2 = (hex(adaptr.portWorldWideName)[2:18])
            d['id'] = idnum
            d['datacenter'] = dc.name
            d['cluster'] = cluster.name
            d['host'] = h.name
            d['pwwn_F1'] = host_wwpn1
            d['pwwn_F2'] = host_wwpn2
            idnum = idnum + 1
    top_dict.update({"data": [d]})

电流输出:

代码语言:javascript
代码运行次数:0
复制
{
  "data": [
       {
        "id": 0,
        "datacenter": "MY_DATACENTER",
        "cluster": "MY_CLUSTER",
        "host": "MY_HOSTNAME",
        "pwwn_F1": "XXXXXXXXXXXXXXXX",
        "pwwn_F2": "XXXXXXXXXXXXXXXX"
        }
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-09 00:55:30

我很肯定您的问题是在您展示的代码的最后一行。该行用新值替换top_dict的整个内容。我很确定您希望将您的新字典d添加到top_dict中的列表中。

相反,我认为你想做top_dict["data"].append(d)。您还需要将d的初始化移到与append调用相同的级别(因此,如果您保持当前的最后一行缩进,则可能在前两个循环之间)。

我不确定最后一行是否缩进了正确的数量(因为我实际上不知道您的代码应该做什么)。目前,在使用这些值之前,您可能会在d中多次设置它们。您可能希望将最后一行缩进到与d中的行设置值相同的级别( d的初始化也应该在该级别上)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48104944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档