我正在尝试在我的程序顶部编写一个代码块,如果程序在Python 2.x中意外运行,它将给出错误消息并退出,但是如果在Python 3.x中运行将正常运行:
try:
print "Error: This program should only be run in Python 3."
raw_input('>')
exit()
except SyntaxError:
pass
print("I see you're running Python 3.")
# rest of program
这在Python 2.7中正常工作(即,它显示错误并退出),但是当我在Python 3.3中运行它时,我得到一个SyntaxError,即使我告诉它有例外。
File "version.py", line 2
print "This program should only be run in Python 3"
^
SyntaxError: invalid syntax
我错过了什么?
答案 0 :(得分:7)
SyntaxError
被抛出编译时。你不能像运行时异常那样捕获它们。
如果您想查看python版本,请查看sys.version_info
。
即
import sys
if sys.version_info.major < 3:
sys.exit('This program should only be run in Python 3')
答案 1 :(得分:1)
以下是关于如何做你想做的事的一个小例子:
import sys
if sys.version_info.major == 2:
print("Error: This program should only be run in Python 3.")
raw_input('>')
exit(0)
此代码将在python2和python3中运行。在这种情况下,您不需要使用try catch。因为在python2中,(
和)
没有效果,因为它们不是元组。你可以编写那种东西,它可以在没有SyntaxError的python2和python3中工作。