【问题标题】:How to print output and stay in the same line (Python)?如何打印输出并保持在同一行(Python)?
【发布时间】:2020-05-16 02:21:30
【问题描述】:

我有跨越多行的字符串,导致终端滚动到最新的打印行。但我想留在第一行,这样我就能看到第一行,但看不到最新的。那可能吗? 例如:

for i in range(100):
    print(f"hello {i}")

我想看到hello 0,但输出应该保持相同的形状

【问题讨论】:

  • 我不确定标记的答案是否重复。这个用户想要阻止他的终端滚动到他的长输出的底部。我认为这是不可能的。
  • 这不是输出程序可以如此轻松地操作的东西。也许您需要调整终端的设置。
  • 当到达终端的底线时,程序是否应该停止打印?您可以在print 中添加一个循环来保持计数。

标签: python python-3.x output


【解决方案1】:

如果您使用 GNU,则可以将 defscrollback 设置为 100。否则,这应该会有所帮助:

class More(object):
def __init__(self, num_lines):
    self.num_lines = num_lines
def __ror__(self, other):
    s = str(other).split("\n")
    for i in range(0, len(s), self.num_lines):
        print(*s[i: i + self.num_lines], sep="\n")
        input("Press <Enter> for more")
more = More(num_lines=30)  
"\n".join(map(str, range(100))) | more

【讨论】:

    【解决方案2】:

    我认为这个问题实际上不是关于 python 而是关于你使用的终端模拟器。在大多数终端模拟器中,您可以在启动应用程序后简单地向上滚动一行,这样输出就不会自动向下滚动。只需执行以下操作:

    1. 打开终端
    2. 启动您的 python 脚本
    3. 在大输出开始之前向上滚动
    4. 希望您的终端保持原状。

    或者,您可以将程序的输出通过管道传输到 less,以便您可以逐页滚动:

    ps x | less
    

    【讨论】:

    • 嗯,但我的意图是将其实现到代码中...:/
    猜你喜欢
    • 2014-03-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多