我可以在一个while循环中使用两个计数器吗?

2024-06-16 11:16:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码,它在没有try部分的情况下按预期工作,并且得到了两个答案

while counter < (len(response['Reservations'])):
    INSTANCEID = response['Reservations'][counter]['Instances'][0]['InstanceId']
    ITYPE = response['Reservations'][counter]['Instances'][0]['InstanceType']
    print('ID: %s, Type: %s') % (INSTANCEID, ITYPE)
    counter += 1
    try:
        IPROFILE = response['Reservations'][counter]['Instances'][***<<2nd counter??>>***]['IamInstanceProfile'][0]['Arn']
        print IPROFILE
        counter += 1
        return IPROFILE
    except:
        print('No ARN found')

输出:

ID: i-abcd123, Type: t2.micro.  
ID: i-defg456, Type: t2.large  

一旦我添加了try部分,我只得到以下答案:

ID: i-abcd123, Type: t2.micro.  
ARN: arn:<VERY_LONG_STRING_OF_ARN>  

这让我相信while循环并没有像它应该的那样迭代。 这就引出了我的问题:我能在一句话中使用2个“计数器”吗?
我是否需要像这样分离过滤器(例如,不适合我)

IPROFILE = response['Reservations'][counter]['Instances']
I2PROFILE = IPROFILE[0]['IamInstanceProfile'][0]['Arn'] 

也许在第一个“计数器”下面的另一个“计数器”使用另一个while循环


Tags: instances答案idresponsetypecounter计数器reservations
2条回答

我的筛选似乎有错误,
结果我不需要第二个计数器,我的+1计数器放错地方了

我对回复者的感谢:你帮了我很多

这是下一代的工作代码…:

counter = 0
while counter < (len(response['Reservations'])):
    INSTANCEID = response['Reservations'][counter]['Instances'][0]['InstanceId']
    ITYPE = response['Reservations'][counter]['Instances'][0]['InstanceType']
    print('ID: %s, Type: %s') % (INSTANCEID, ITYPE)
    try:
        IPROFILE = response['Reservations'][counter]['Instances'][0]['IamInstanceProfile']['Arn']
        print IPROFILE
        print(' ')
        counter += 1
        #print counter
    except:
        print('No Role attached - Trying to attach')
        print(' ')
        attach_role(INSTANCEID,REGION)
        counter += 1

你的代码不是很像Python。通常,不需要使用计数器。我看不到您的完整代码,但应该更像:

response = client.describe_instances()

for reservation in response['Reservations']:
    for instance in reservation['Instances']:
        instance_type = instance['InstanceType']
        print(instance_type)

相关问题 更多 >