2010-03-30 57 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解釋器,它會引發與您相同的語法錯誤。

這是因爲解釋器需要用空行分隔單個塊。另外,空白行(兩個新行字符)表示塊的結束,並且解釋器應該執行它。

相關問題