2009-07-14 4 views
-4

私はエラーがスローされます私のスクリプトPythonのエラースクリプトを実行している - 「IndentationError:インデント解除は任意の外側のインデントと一致しません」

Error:"IndentationError: unindent does not match any outer indentation" 

コードsnipet実行しようとすると、私はエラーを取得しています:

def update(): 
    try: 
     lines = open("vbvuln.txt", "r").readlines() 
    except(IOError): 
     print "[-] Error: Check your phpvuln.txt path and permissions" 
     print "[-] Update Failed\n" 
     sys.exit(1) 
    try: 

これは、エラーが発生した実際の行です:

print "[-] Update Failed\n" 
+0

コードボタンを使用して、正しい改行とインデントを含む質問を投稿する必要があります。 それ以外の場合は、インデントが間違っているかどうかを判断することは困難です。 – Christian

+2

-1考えてみる前に。 – Boldewyn

答えて

0

あなたが持つ空のtryブロックを持っていますそれの下に何もない。これがエラーの原因です。

ご参考までに、sys.exit(1)もインデントしていません。 Pythonインタプリタがコードブロックを決定する方法であるため、Pythonではインデントが重要です。したがって、コードを適切にインデントしてコードを実行する必要があります。

+0

最後の 'try'ブロックは空ではない可能性が高いです。空の場合、エラーは「インデントされたブロックが必要」となります。とにかく(except syntax) – Blixt

6

sys.exit(1)の前にスペースを挿入するか、​​とprint "[-] Update Failed\n"の前にスペースを削除してください。

0

インデントエラーは、インデントが正しくない場合に発生します。これは "sys"で始まる行に異なるインデントがあることではっきりとわかります。

3

他にも言及したように、各コードブロックのインデントが完全に同じであることを確認する必要があります。

何も言及していないのは、widely adopted conventionがインデントごとに常に正確に4つのスペースを使用するということです。あなたのコードでは、printステートメントは5つのスペースを使用してインデントされています(事故の可能性が最も高い)。sys.exit(1)に別のスペースを追加しないでください。空白をprintステートメントから削除します。

改訂コード:あなたのくぼみのための標準を維持するために

def update(): 
    try: 
     lines = open("vbvuln.txt", "r").readlines() 
    except (IOError): 
     print "[-] Error: Check your phpvuln.txt path and permissions" 
     print "[-] Update Failed\n" 
     sys.exit(1) 
+0

私もPEP8の信者であるが、Pythonの4つのスペースは標準ではなく、その規約であるとは言いません。多かれ少なかれ空白を使っても、一貫している限り、Pythonを破壊することはありません。 –

+0

あなたは正しいです、私は言葉を変えました。私はまだ悪い目にインデントをするために4つのスペースを使用しなかった開発者を与えるだろう... =) – Blixt

+0

4以外のものはすべて禅に逆らっています。 – Robbie

1

良い方法ではなく、スペースバーの[Tab]キーを使用することです。