
def p(): print("我是小米", end="\r") print("我是小米的哥哥大米", end="\r") print("我是雷布斯", end="\r")
output: 我是雷布斯哥哥大米
如何最后只显示 我是雷布斯. 这个函数效果是: 结果全部只显示在一行且以新输出覆盖旧输出, 问题是只是覆盖, 不会清除旧输出, 导致很尴尬.
感谢了~
1 Ahagotyou OP ``` print("服") ``` |
2 lance6716 May 24, 2019 只用 print 做不到,需要调终端接口吧 |
3 leoleoasd May 24, 2019 via Android 可以打印退格键 |
4 weyou May 24, 2019 via Android 这个问题跟语言无关。 这次打印的内容比上一次短的话,在后面补空格到相同的长度来覆盖上一次的打印就行了 |
5 baobao1270 May 24, 2019 每一次输出之前,输出一堆空格,先覆盖掉不久行了 另外,建议用 format 函数统一输出长度 |
6 cissoid May 24, 2019 用 escape code print("\x1B[K 我是小米的哥哥大米", end="\r") |
7 lrxiao May 24, 2019 写一个 context manager hook 掉 sys.stdout 然后自己搞 |
8 nondanee May 24, 2019 "\r\033[K" |
9 Qzier May 25, 2019 via iPhone 你需要用先清空标准输出,代码如下: |
10 Qzier May 25, 2019 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 May 25, 2019 你需要将终端想象成一个打字机,而\r 的作用只是把打字的位置强行拉回行首,并不会刷新原有输出,所以新的输出只是覆盖原有输出而已,没有被覆盖到的地方还是保留原状 |