在python中捕获IOError

时间:2011-02-02 00:14:22

标签: python exception exception-handling try-catch ioerror

我写了一个方法来做一些东西并捕获错误的文件名。应该发生的是如果路径不存在,它会抛出一个IOError。但是,它认为我的异常处理是错误的语法...为什么??

def whatever():
    try:
        # do stuff
        # and more stuff
    except IOError:
        # do this
        pass
whatever()

但在它甚至调用whatever()之前,它会打印以下内容:

Traceback (most recent call last):
  File "", line 1, in 
  File "getquizzed.py", line 55
    except IOError:
         ^
SyntaxError: invalid syntax

导入时...帮助?!

4 个答案:

答案 0 :(得分:11)

检查你的缩进。这个无用的SyntaxError错误有 fooled me before. :)

来自已删除的问题:

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

答案 1 :(得分:3)

如果您有幸拥有较旧的安装,那么还有1个可能

<强>

你正在使用'as'语法:

except IOError as ioe:

<强>

解析器被'as'绊倒了。

使用as是Python 2.6及更好的首选语法。

这是Python 2.5及更早版本中的语法错误。对于2.6之前的版本,请使用:

except IOError, ioe:

答案 2 :(得分:2)

错过try块中的内容,即pass或其他内容,否则会出现缩进错误。

答案 3 :(得分:1)

如果您没有在try块旁边添加某些内容,则会出现语法错误。 您可以将pass仅用于保留空格:

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