【发布时间】:2021-12-11 07:14:44
【问题描述】:
问题
在我用 python 编码的两年中,我在某个地方和某个地方遇到了这个问题,因此我想寻求正确的方法。你如何让它覆盖以前的打印,同时有换行符(通过返回或\n)。我已经尝试了我能找到的大多数答案,但它只完成了我想要的一项工作。
测试模型
import time, sys
counter1 = 0
counter2 = 0
counter3 = 0
for i in range(5):
time.sleep(0.1)
counter1 += 1
counter2 += 1
counter3 += 1
#print method here!
尝试 1:
使用 """ 和 \r 的多行 (f) 字符串
print(f"""\r
Counter 1: {counter1}
Counter 2: {counter2}
Counter 3: {counter3}
""")
尝试 1 的输出:
Counter 1: 1
Counter 2: 1
Counter 3: 1
Counter 1: 2
Counter 2: 2
Counter 3: 2
..etc
尝试 2:
使用\r 和\n 的普通(f)字符串
print(f"\rCounter 1: {counter1}\nCounter 2: {counter2}\nCounter 3: {counter3}")
尝试 2 的输出:
Counter 1: 1
Counter 2: 1
Counter 3: 1
Counter 1: 2
Counter 2: 2
Counter 3: 2
etc..
尝试 3:
使用sys.stdout.write、\r 和\n
sys.stdout.write(f'\rCounter 1: {counter1}\nCounter 2: {counter2}\nCounter 3: {counter3}')
sys.stdout.flush()
尝试 3 的输出:
Counter 1: 1
Counter 2: 1
Counter 1: 2
Counter 2: 2
Counter 1: 3
etc..
尝试 4:
在末尾使用回车(\r):
print(f"Counter 1: {counter1}\nCounter 2: {counter2}\nCounter 3: {counter3}\n", end = "\r")
尝试 4 的输出:
Counter 1: 1
Counter 2: 1
Counter 3: 1
Counter 1: 2
Counter 2: 2
Counter 3: 2
尝试 5:
彼此分开打印,第一个前面有\r
print(f"\rCounter 1: {counter1}")
print(f"Counter 2: {counter2}")
print(f"Counter 3: {counter3}")
尝试 5 的输出:
Counter 1: 1
Counter 2: 1
Counter 3: 1
Counter 1: 2
Counter 2: 2
Counter 3: 2
【问题讨论】:
标签: python python-3.x newline carriage-return