Python3 打印在某些终端中不覆盖当前行。

问题描述 投票:0回答:1

我写了一个小工具,可以在一个词表上迭代,我想让它把词表中的每一行都打印在前一行上,我试过以下方法,但有问题。

print(word + (100 * " "), end="\r", flush=True)

这在VSCodes内置终端中可以正常工作,但当我在操作系统(Xfce)内置终端或Terminator中运行同一工具时,每个 "单词 "都打印在一个新行上。

有谁知道为什么会发生这种情况,我所有的研究只是指出我如何做,这没有帮助,因为做它的方式是什么有这个问题。

谢谢你的帮助

python python-3.x terminal output
1个回答
2
投票

这是因为根据你的窗口宽度(和单词长度),每个字符串可能比行长。所以下一条打印语句 '覆盖'前一个字符串,但是由于前一个字符串跳了一行,所以新的字符串从新的一行开始。

你可以通过打印99个空格,后面跟着一个*或其他字符来观察这个操作。

print(word + (99 * " ") + "*")

根据你的窗口宽度和字的长度,这可能会跳行,也可能不会跳行,正如 "*"打印的地方所显示的那样。

© www.soinside.com 2019 - 2024. All rights reserved.