python - \r 在 Python 中不会删除整行
问题描述
我有一个相当复杂的问题,但这里是“最简单的版本”,所以你可以更好地理解它。
import time
for i in range(10):
time.sleep(1)
print('{}\r'.format(i), end="")
在这里一切正常,当我尝试倒计时时问题就来了
import time
for i in range(10):
time.sleep(1)
print('{}\r'.format(10-i), end="")
输出是 10... 然后是 90... 80... 70 依此类推,似乎 10 的第二个密码没有被取消。有人能告诉我为什么吗?
解决方案
\r
将光标移动到行首,但它不会“清除”已经打印的任何内容,除非您覆盖它(这可能取决于平台)。因此,0
角色将保持可见。您可以通过始终打印“固定宽度”列来处理该问题,以便打印空白以清除之前留下的任何内容。您也可以将 CR 放在end
参数中。
因此:
import time
for i in range(10):
time.sleep(1)
print('{: <3}'.format(10-i), end='\r')
这使用格式说明符来指示
空格填充、<
左对齐、3
-width 列。您可以3
根据计数器需要的位数将其更改为任何更高的数字。
推荐阅读
- python - 如果函数中断,如何从函数内部返回好的数据?
- python - 什么情况下使像“1.0”(带有 .0)这样的浮点数成为整数?
- javascript - 平滑滚动到按钮中的特定坐标
- r - 使用自定义函数同时改变几个特征
- conditional-statements - 在 AQL 中使用 IF THEN 的正确方法是什么?
- sql - Oracle SQL:如何合并 n 行并在结果中创建附加列?
- angular - 如何刷新 Ionic 页面中的数据?
- python - 如何使用 PySpark 在给定日期获取每个类别的百分比
- python - 根据 Pandas 数据框的其他列中的值计算列值
- python - 如何从 python 复制 pyspark / hadoop 中的文件