2017-09-01 7 views
-2

私はクラスのための私のプロジェクトをやろうとしています。人々が言っ​​たようにインデントが外側のインデントレベルと一致しません。これは私の先生が私に教えたコードです

author='' 
try: 
    fh = open(sys.argv[0], encoding="utf8") 
    for line in fh: 
     m = re.search('# *AUTHOR: *([\w\-]+ *[\w\-]+)', line) 
     if m is not None: 
      author = m.group(1) 
except(IOError, OSError) as err: 
    print(err) 
    return '' 
finally: 
    if fh is not None: 
     fh.close() 
return author.lower() 
+6

まあ、何も '最終的には後がない...少なくとももう1つの行があるはずです::'、つまりPythonはERR '後に多くを期待していること:' .. – MatsLindh

+0

したがってこれはあなたに同じエラーを与えます'except'ブロックで何もしたくない場合は、' pass'を含める必要があります – Barmar

+0

まだインデントエラーはありますか? – Mangohero1

答えて

0

は、あなたが/条件/ループを持って期待することはできませんか、それの後に何も持っていないブロックのいずれかの種類:

try:

    ^ IndentationError: unindent does not match any outer indentation level

は、ここに私のコードです。 エラーをキャッチしても何もしない場合は、pass(右のインデントはもちろん)を追加してください。

author='' 
try: 
    fh = open(sys.argv[0], encoding="utf8") 
    for line in fh: 
     m = re.search('# *AUTHOR: *([\w\-]+ *[\w\-]+)', line) 
     if m is not None: 
      author = m.group(1) 
except(IOError, OSError) as err: 
    # Do something here or pass 
    pass 

コメントを追加するだけで、何も追加しないことになります。

except(IOError, OSError) as err: 
    # I want to do nothing 
+0

コードの状態の残りの部分を追加しました。私はそれを元の投稿に入れて忘れましたが、編集しました。 – SoluriZe

+0

エラーは明示的です。したがって、インデントを確認してください。 Pythonは、C/C++が角括弧{}を使うのと同じ方法でインデントを使います。同一のインデントされた行は同じブロックに属します。あなたの 'try'命令が関数に含まれている場合、関数に含まれるものは全てインデントされていなければなりません(そして、すべての行に同じインデントを使用します。 –

関連する問題