此问题在此处已有答案:
How to overwrite the previous print to stdout?(19个答案)
13天前关门了。
for i in range(0, 100):
print(i, end="\r")
字符串
按预期工作,它将下一个数字写入sys.stdout的位置与最后一个数字相同
0
1
...
100
型
但如果数字减少,比如
for i in range(101, 0, -1):
print(i, end="\r")
型
它会吐出这样的东西:
100 # this is supposed to be 100
990 # 99
980 # 98
...
100 # 1
型
有什么想法吗?
我确实尝试使用\b
技巧,但结果与使用\r
相同。
我对flush=True
也做了同样的事情,但没有区别
我希望这行完全无效的任何前面的数字,例如
100
99
98
...
1
型
1条答案
按热度按时间4si2a6ki1#
\r
将写入光标返回到行首,\b
返回一个字符。他们不会删除任何东西。如果你想要真实的的擦除,你应该写空格。例如,“人类”退格键(你在键盘上写字时会期望什么)是
\b \b
->将光标移回一个后移,写入空格覆盖该字符,再将光标移回空格之前。假设你知道你的东西最多需要3个字符。我们可以告诉python字符串格式化“这个东西需要3个字符”。
默认情况下,数字与其右对齐:
字符串
但是我们可以使用<强制左对齐:
型
左对齐的数字填充为始终占用3个空格是什么匹配你想要的