web-dev-qa-db-ja.com

pythonでIOErrorをキャッチする

私はいくつかのことを行い、悪いファイル名をキャッチするメソッドを書きました。パスが存在しない場合は、IOErrorがスローされます。しかし、それは私の例外処理が悪い構文であると考えています...なぜ??

 defwhatever():
 try:
#do stuff 
#and more stuff 
ただしIOError:
#これを行う
 pass 
 whatever()

ただし、whatever()を呼び出す前に、次のように出力します。

トレースバック(最後の最後の呼び出し):
ファイル ""、1行目
ファイル "getquizzed.py"、55行目
ただしIOError:
 ^ 
 SyntaxError:無効な構文

インポートすると...ヘルプ?!

12
tekknolagi

インデントを確認してください。この役に立たないSyntaxErrorエラーには 前に私をだましました。 :)

削除された質問から:

I'd expect this to be a duplicate, but I couldn't find it.

Here's Python code, expected outcome of which should be obvious:

x = {1: False, 2: True} # no 3

for v in [1,2,3]:
  try:
      print x[v]
  except Exception, e:
      print e
      continue
I get the following exception: SyntaxError: 'continue' not properly in loop.

I'd like to know how to avoid this error, which doesn't seem to be 
explained by the continue documentation.

I'm using Python 2.5.4 and 2.6.1 on Mac OS X, in Django.

Thank you for reading
10
Brian M. Hunt

古いインストールを使用する特権がある場合は、さらに1つ可能性があります

and

'as'構文を使用しています:

except IOError as ioe:

and

パーサーは「as」でつまずきます。

asの使用は、Python 2.6以降で推奨される構文です。

Python 2.5以前では構文エラーです。2.6より前の場合は、次を使用してください。

except IOError, ioe:

3
Der Schley

tryブロックに何かが欠けているだけです。つまり、passなどです。そうでない場合は、インデントエラーが発生します。

2
Benjamin

tryブロックの横に何かを配置しないと、構文エラーが発生します。スペースを保持するためだけにpassを置くことができます。

try:
    # do stuff
    # and more stuff
    pass
except IOError:
    # do this
    pass
1
unutbu