为什么我在控制台上遇到语法错误,但是当从脚本运行相同的代码时却没有?

时间:2013-02-03 04:11:56

标签: python

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

这就是为什么我认为这应该有效。

1 个答案:

答案 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
>>>