Python 2.7.3
从控制台:
>>> try:
... fsock = open("something_that_does_not_exist")
... except IOError:
... print "The file does not exist"
... print "Let's keep going"
Traceback ( File "<interactive input>", line 5
print "Let's keep going"
^
SyntaxError: invalid syntax
如果我将相同的代码保存到脚本中:
ex.py
def try1():
try:
fsock = open("something_that_does_not_exist")
except IOError:
print "The file does not exist"
print "Let's keep going"
并运行它:
>>> import ex
>>> ex.try1()
The file does not exist
Let's keep going
>>>
我在控制台上尝试了这个,IDLE和PythonWin。相同的结果。
有什么区别?
修改
我正在学习Python,其中包括“潜入Python”(http://www.diveintopython.net/)。在示例6.1中,作者正好显示了从命令行运行此示例:http://www.diveintopython.net/file_handling/index.html
这就是为什么我认为这应该有效。
答案 0 :(得分:2)
您必须完成try
except
阻止。如果你在中间添加另一行,解释器就不会搞砸了。原因是它认为print语句是try的一部分,而不是。因此,如果您完成了except语句,并让该部分运行然后粘贴下一个print语句,它将起作用。
>>> try:
... fsock = open("something_that_does_not_exist")
... except IOError:
... print "The file does not exist"
...
<output is here>
然后在:
中添加此语句>>> print "Let's keep going"
粘贴到python解释器并不总是能够解决与此类似的一系列原因。解释器用于测试代码的随机片段,你不能指望粘贴大型函数在放入时总能正常工作。
正如您所看到的,这是同一件事:
>>> try:
... print 'hi'
... except:
... print 'yo'
... print 'hi'
File "<stdin>", line 5
print 'hi'
^
SyntaxError: invalid syntax
>>>