在Python中使用\r(回车)无法正常工作[重复]

6pp0gazn  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(182)

此问题在此处已有答案

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

4si2a6ki

4si2a6ki1#

\r将写入光标返回到行首,\b返回一个字符。他们不会删除任何东西。
如果你想要真实的的擦除,你应该写空格。例如,“人类”退格键(你在键盘上写字时会期望什么)是\b \b->将光标移回一个后移,写入空格覆盖该字符,再将光标移回空格之前。
假设你知道你的东西最多需要3个字符。我们可以告诉python字符串格式化“这个东西需要3个字符”。
默认情况下,数字与其右对齐:

print(f"{i:3}", end="\r")

字符串
但是我们可以使用<强制左对齐:

print(f"{i:<3}", end="\r")


左对齐的数字填充为始终占用3个空格是什么匹配你想要的

相关问题