我正在编写一个脚本,其中包括在没有换行符的情况下打印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
,但找不到任何暗示这种情况的原因。
答案 0 :(得分:2)
正如文件所说:
这可能发生在import语句,exec语句,内置函数eval()或input()的调用中,或者在读取初始脚本或标准输入时(也是交互式)。
在执行任何代码之前,在读取程序时会解析整个文件的语法。如果语法无效,Python甚至无法开始运行代码。因此,您无法捕获模块内发生的SyntaxError。
对于这种特殊情况,有一种替代方法,即from __future__ import print_function
。
答案 1 :(得分:0)
这应该对你有帮助。
from __future__ import print_function
import time;
for sec in range(2):
print(sec, end='')
time.sleep(1)