Могу ли я использовать 2 счетчика в одном, пока l oop? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть этот код, который работает, как и ожидалось, без части 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')

output:

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

Как только я добавлю try part I получить только этот ответ:

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

Что заставляет меня верить, что пока l oop не повторяется, как следует. Таким образом, это подводит меня к моим вопросам: могу ли я использовать 2 «счетчика» в одном предложении?
Нужно ли разделять фильтр следующим образом (пример, на самом деле не работает для меня)

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

Может быть, использовать другое время, пока l oop для этого другого «счетчика», под первым?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Кажется, у меня была ошибка в моей фильтрации,
Оказалось, что мне не нужен второй счетчик, и мой счетчик +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
0 голосов
/ 01 апреля 2020

Ваш код не очень Pythoni c. Обычно не нужно использовать счетчик . Я не вижу ваш полный код, но он должен выглядеть примерно так:

response = client.describe_instances()

for reservation in response['Reservations']:
    for instance in reservation['Instances']:
        instance_type = instance['InstanceType']
        print(instance_type)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...