为什么控制台报语法错误,但脚本运行时没有?
这是关于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,参考的资料包括《Dive into Python》(http://www.diveintopython.net/)。在第6.1个例子中,作者展示了如何从命令行运行这个例子:http://www.diveintopython.net/file_handling/index.html
所以我觉得这个应该可以正常工作。
1 个回答
2
你需要完成 try
except
这个代码块。如果你在中间加一行代码,解释器不会出错。原因是它会把打印语句当作 try
里面的一部分,虽然实际上并不是。所以如果你先完成 except
的部分,让它运行,然后再粘贴下一条打印语句,这样就能正常工作了。
>>> 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
>>>