2017-01-27 95 views
3

我有一個簡單的代碼位的是進入AWS,並抓住了一些數據,那麼打印出來安慰可能忽略KeyError?

mycode的:

import boto3 
from pprint import pprint 

ec2 = boto3.resource('ec2') 
client = boto3.client('ec2') 

#This is the VPC ID and Linked Tags 
for vpctags in client.describe_vpcs()['Vpcs']: 
    print("VPC ID: ", vpctags['VpcId']) 
    print("Tags: ", vpctags['Tags']) 
    for subnet in client.describe_subnets()['Subnets']: 
     print("Subnet ID: ", subnet['SubnetId']) 
     print("Subnet ID: ", subnet['Tags']) 

############################################### 

我得到一個錯誤,因爲一個或多個子網我做不有標籤:

print("Subnet ID: ", subnet['Tags']) KeyError: 'Tags'

我不期待每個子網都有標籤,所以有沒有辦法簡單地忽略缺乏標籤,只是打印空白或只是繼續前進?

對不起,如果這聽起來像一個愚蠢的問題,我搜索谷歌,發現一些想法,但他們看起來有點先進的我有什麼。

+0

使用異常。 –

回答

6

是, 可以更換

print("Subnet ID: ", subnet['Tags']) 

print("Subnet ID: ", subnet.get('Tags', '')) 

使用GET與允許你定義的情況下,標籤的缺省值不存在

4

趕上KeyError exception

try: 
    print("Tags: ", vpctags['Tags']) 
except KeyError: 
    print("Tags: None") 

如果Tags鍵不存在,這反而打印 「無」。

1

比誘捕好得多例外:使用get

print("Tags: ", vpctags.get('Tags',"None")) 
0

另一種選擇:

if 'Tags' in subnet: 
    print("Subnet ID: ", subnet['Tags'])