2017-03-08 4 views
0

私は、私はエラーを取得しています実行中(「AWSラムダ」)で下記の「Pythonスクリプト」を使用して関数を呼び出すしようとしています"forループを:以外&を試してみてください" を含む行の一つのスクリプトは、既存のAWSインスタンスのAMIPythonのスクリプトエラー - ループの内側を除いてみてください - 構文エラー

ParseError: bad input on line 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 

私は「ついにを:」を追加しようと試みを閉じるために:私のpythonに新しいですと

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 

以下のようしかし、それでもまだ、私は同じエラーを取得しています、私はどのように確認していませんこの例外を克服する。

フルスクリプトは、あなたのコード内のfinally節が間違った場所にあるGitHub-AMI-Creation-Script

答えて

0

でご利用いただけます。関係なく、常に例外があるか否かの実行され、それは、finally句にtryexcept同じインデントレベル、例えば:

try: 
    <some code> 
except IndexError: 
    <some code> 
finally: 
    <some code> 

でコードであるべきです。これは、リソースをクリーンアップまたは解放するためによく使用されます。

+0

@gamaatを支援します。私を修正するためのおかげで、聞かせて私はコードに以下の変更を試してみてください:** '例のインスタンス: try:[0]を除く の場合、[[Key '] ==' Retention '] 0 [retention_days = 7の場合は、[int(t.get(' Value ' \tは最終的に: retention_days.close()「** ない私が使用して最終的にクローズコールは私のクエリに答えるため – Subash

0

try内のあなたのコードはかなり混乱していますが、実際には正しく読み込まれていないようです。

intにt.get( 'Value')を解析していますが、同じ行でこれを行うとまだ作成されていません。インスタンス['Tags']の末尾に ':'

が、私はこれをテストし、それを変更したり、それで遊ぶこと自由に感じますが、これはあなたの目的の方に役立つかもしれないしていない:

for instance in instances: 
    try: 
     for t in instance['Tags']: 
      if t['Key'] == 'Retention': 
       retention_days = int(t['Value']) 
    except IndexError: 
     retention_days = 7 

ホープこれは

+0

おかげで正しいことを確認し、私はあなたの特定の変化にテストを試してみましたが、そのは再び構文エラーを投げ:**」モジュール 'lambda_function'の構文エラー:インデントが外側のインデントレベル**(lambda_function.py、48行目)に一致しません ' – Subash

+0

コードを直接コピーして貼り付けた場合、インデントを完全に同じ行にすることはできませんだからあなたはやり直してインデントを確認する必要があるかもしれません同じ。 Pythonは、そのエラーメッセージが何であるかについて、インデントに関してかなり特定的です。 – vxstorm

+0

@Subashスニペットでインデントを修正しました。今すぐ試すことができますか? – vxstorm

関連する問題