2010-03-30 27 views
2

这段代码在我从.py文件中尝试使用时有效,但在命令行解释器和空闲模式下失败。为什么我在Python解释器中得到一个SyntaxError?

>>> try: 
...  fsock = open("/bla") 
... except IOError: 
...  print "Caught" 
... print "continue" 
    File "<stdin>", line 5 
    print "continue" 
     ^
SyntaxError: invalid syntax 

我使用python 2.6

+0

您使用的是什么版本的Python? – 2010-03-30 00:06:39

+0

更新了问题。 python 2.6。 – 2010-03-30 00:08:37

+2

请注意,您在打开文件时('open(filename,mode)as f:')总是希望使用上下文管理器。 – 2010-03-30 00:12:13

回答

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" 
4

你需要留出一个空行,关闭except块。 ...表示它仍在尝试将代码放入该块中,即使您已将其缩减。这只是交互式解释器的一个怪癖。

2

试试这个的解释:

try: 
    fsock = open("/bla") 
except IOError: 
    print "Caught" 

print "continue" 

这里重要的是压痕后的空行。我使用python 2.6解释器,它会引发与您相同的语法错误。

这是因为解释器需要用空行分隔单个块。另外,空白行(两个新行字符)表示块的结束,并且解释器应该执行它。

相关问题