13

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

def 不管():
    尝试:
        # 做东西
        # 还有更多东西
    除了 IOError:
        # 做这个
        经过
任何()

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

回溯(最近一次通话最后):
  文件“”,第 1 行,在
  文件“getquizzed.py”,第 55 行
    除了 IOError:
         ^
SyntaxError:无效的语法

导入时...帮助?!

4

4 回答 4

10

检查你的缩进。这个无益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
于 2011-02-02T00:16:34.697 回答
6

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

您正在使用“as”语法:

     except IOError as ioe:

解析器被“as”绊倒了。

Usingas是 Python 2.6 和更好的首选语法。

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

     except IOError, ioe:

于 2013-08-14T16:05:44.673 回答
2

只是在你的块中遗漏了一些东西try,即pass或任何东西,否则它会给出一个缩进错误。

于 2011-02-02T00:19:32.240 回答
1

如果你不把东西放在try块里,你会得到一个语法错误。您可以pass只放置空间:

try:
    # do stuff
    # and more stuff
    pass
except IOError:
    # do this
    pass
于 2011-02-02T00:17:53.780 回答