Python脚本错误 - 尝试除了for循环内部 - 语法错误

时间:2017-03-08 12:13:11

标签: python-2.7 scripting aws-lambda

我正在尝试使用下面提到的" python脚本"来调用函数。在(" AWS Lambda ")执行时我在包含" for循环的行之一中收到错误:try&除"

脚本用于创建现有aws实例的AMI

  

ParseError:第48行输入错误

第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的新手我不知道如何克服这个异常。

完整脚本位于GitHub-AMI-Creation-Script

2 个答案:

答案 0 :(得分:0)

代码中的finally子句位置错误。它应与tryexcept处于相同的缩进级别,例如:

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

希望这有帮助