为什么在Python解释器中出现SyntaxError?
这段代码在我从.py文件运行时能正常工作,但在命令行解释器和Idle中却失败了。
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
... print "continue"
File "<stdin>", line 5
print "continue"
^
SyntaxError: invalid syntax
我使用的是Python 2.6版本。
4 个回答
2
在解释器中试试这个:
try:
fsock = open("/bla")
except IOError:
print "Caught"
print "continue"
这里要注意的是缩进后面要有一个空行。我使用的是Python 2.6的解释器,它也会给你一样的语法错误。
这是因为解释器希望每个代码块之间用空行分开。而且这个空行(两个换行符)表示这个代码块结束了,解释器应该执行它。
4
你需要留一个空行来结束except
代码块。...
表示它还在尝试往那个代码块里放代码,即使你已经把缩进去掉了。这只是交互式解释器的一个小怪癖。
5
在Python 3中,print
是一个函数,而不是一个语句,所以你需要在参数周围加上括号,比如说print("continue")
,如果你在使用Python 3的话。
不过,光标的位置比在Python 3时要早,所以你应该是在使用Python 2.x。在这种情况下,出现错误是因为你在交互式解释器中输入这个,解释器需要一点“帮助”来理解你想表达的意思。在前一个代码块后面输入一个空行,这样它就能正确理解缩进了,像这样:
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
...
(some output shows here)
>>> print "continue"