如何在Python 3.6中涵盖输出
我尝试用这段代码重写输出中的一行如何在Python 3.6中涵盖输出,python,python-3.x,Python,Python 3.x,我尝试用这段代码重写输出中的一行 import time print('Hello, world!', end='', flush=True) time.sleep(1) print('\rHi.') 我希望最后能得到这个: Hi. 但事实上,我得到了这个: Hi.lo, world! 那么,我该怎么办呢?\r只要将光标移到行的开头,您就必须覆盖已打印文本的其余部分,例如,用空格将其清空: import time start_text = "Hello, world!" replace
import time
print('Hello, world!', end='', flush=True)
time.sleep(1)
print('\rHi.')
我希望最后能得到这个:
Hi.
但事实上,我得到了这个:
Hi.lo, world!
那么,我该怎么办呢?\r只要将光标移到行的开头,您就必须覆盖已打印文本的其余部分,例如,用空格将其清空:
import time
start_text = "Hello, world!"
replace_text = "Hi."
print(start_text, end='', flush=True)
time.sleep(1)
print("\r" + replace_text + " " * (len(start_text) - len(replace_text)))
# or: print("\r" + " " * len(start_text) + "\r" + replace_text)
我必须以这种方式知道前面的字符串长度。但在我的代码中,我无法获得长度。@coderben-如果您控制屏幕上打印的所有内容,请确保您可以保持最后打印行的长度-只需在打印周围写一个代理,或者更好,劫持sys.stdout。如果你真的无法控制输出,你必须猜测终端的宽度,典型的宽度是80,然后打印出那么多的空格,然后回滚。获取控制台宽度将取决于您使用的平台,tho。不管是哪种方式,如果您想进行奇特的控制台绘制,您可能还是希望探索该模块。