def p(): print("我是小米", end="\r") print("我是小米的哥哥大米", end="\r") print("我是雷布斯", end="\r")
output: 我是雷布斯哥哥大米
如何最后只显示 我是雷布斯. 这个函数效果是: 结果全部只显示在一行且以新输出覆盖旧输出, 问题是只是覆盖, 不会清除旧输出, 导致很尴尬.
感谢了~
1
Ahagotyou OP ```
print("服") ``` |
2
lance6716 2019-05-24 16:56:49 +08:00
只用 print 做不到,需要调终端接口吧
|
3
leoleoasd 2019-05-24 17:03:36 +08:00 via Android
可以打印退格键
|
4
weyou 2019-05-24 17:07:12 +08:00 via Android 1
这个问题跟语言无关。 这次打印的内容比上一次短的话,在后面补空格到相同的长度来覆盖上一次的打印就行了
|
5
baobao1270 2019-05-24 17:14:14 +08:00
每一次输出之前,输出一堆空格,先覆盖掉不久行了
另外,建议用 format 函数统一输出长度 |
6
cissoid 2019-05-24 17:23:18 +08:00
用 escape code
print("\x1B[K 我是小米的哥哥大米", end="\r") |
7
lrxiao 2019-05-24 20:22:17 +08:00
写一个 context manager hook 掉 sys.stdout 然后自己搞
|
8
nondanee 2019-05-24 20:35:47 +08:00
"\r\033[K"
|
9
Qzier 2019-05-25 00:45:31 +08:00 via iPhone
你需要用先清空标准输出,代码如下:
|
10
Qzier 2019-05-25 00:45:49 +08:00 via iPhone
import sys
from time import sleep messages = [ '我是雷军', '我是小米', '我是大米' ] while True: for msg in messages: sys.stdout.flush() sys.stdout.write(f'\r{msg}') sleep(0.5) |
11
qcts33 2019-05-25 15:14:32 +08:00
你需要将终端想象成一个打字机,而\r 的作用只是把打字的位置强行拉回行首,并不会刷新原有输出,所以新的输出只是覆盖原有输出而已,没有被覆盖到的地方还是保留原状
|