这个问题在这里已经有了答案:
Failed to catch syntax error python [duplicate]
(2 个回答)
3年前关闭。
我正在编写一个脚本,其中包括在没有换行符的情况下打印 10 秒倒计时,并且我希望它与 Python2 和 Python3 兼容。
这是我尝试过的:
for sec in range(10, 0, -1):
try:
print(" %d \r" % sec, end="")
except SyntaxError:
subprocess.call("printf \" %d \\r\"" % sec, shell=True)
time.sleep(1)
我收到了这个错误:
print(" %d \r" % sec, end="")
^
SyntaxError: invalid syntax
在我看来
SyntaxError
应该被抓到。我已尝试研究该主题,并阅读了 documentation on
SyntaxError
,但找不到任何暗示为什么会发生这种情况的东西。
最佳答案
正如文档所说:
This may occur in an import statement, in an exec statement, in a call to the built-in function eval() or input(), or when reading the initial script or standard input (also interactively).
在读取程序时,在执行任何代码之前解析整个文件的语法。如果语法无效,Python 甚至无法开始运行代码。因此,您无法捕获模块内部发生的 SyntaxError。
对于这种特殊情况,有一个替代方案,即
from __future__ import print_function
.
关于python - 捕捉语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25562107/