我正在尝试使用下面提到的" python脚本"来调用函数。在(" AWS Lambda ")执行时我在包含" for循环的行之一中收到错误:try&除"
脚本用于创建现有aws实例的AMI
第48行说:ParseError:第48行输入错误
43 for instance in instances:
44 try:
46 retention_days = [
47 int(t.get('Value')) for t in instance['Tags']
48 if t['Key'] == 'Retention'][0]
49 except IndexError:
50 retention_days = 7
我尝试最后添加" :"关闭尝试:如下所示
43. for instance in instances:
44. try:
45. retention_days = [
46. int(t.get('Value')) for t in instance['Tags']
47. if t['Key'] == 'Retention'][0]
48. finally:
49. retention_days.close()
50. except IndexError:
51. retention_days = 7
但我仍然得到同样的错误,因为我是python的新手我不知道如何克服这个异常。
答案 0 :(得分:0)
代码中的finally
子句位置错误。它应与try
和except
处于相同的缩进级别,例如:
try:
<some code>
except IndexError:
<some code>
finally:
<some code>
无论是否存在异常,都将始终执行finally
子句中的代码。这通常用于清理或释放资源。
答案 1 :(得分:0)
您在try中的代码相当令人困惑,它似乎无法正确读取。
您正在将t.get('Value')解析为int但尚未创建t,因为您在同一行上执行了此操作并且实例中的for t ['Tags']缺少结束':'< / p>
我没有对此进行过测试,可随意更改或使用它,但这可能对您的目标有所帮助:
for instance in instances:
try:
for t in instance['Tags']:
if t['Key'] == 'Retention':
retention_days = int(t['Value'])
except IndexError:
retention_days = 7
希望这有帮助