【问题标题】:python - multi line stdout refresh issuepython - 多行标准输出刷新问题
【发布时间】:2010-10-15 04:22:50
【问题描述】:

我有一个用 python 编写的统计应用程序,它在计时器上用统计信息刷新 ssh 屏幕。现在它使用 os.system('clear') 清除屏幕,然后输出带有统计信息的多行数据。

我只想做一个 \r 而不是执行 clear 但这仅适用于一行,是否可以用多行执行此操作?

我想要做的一个经典示例是,当您执行“top”命令时,该命令列出了当前进程,它会更新屏幕而不执行“clear”,并且它有很多行。

有人对此有什么建议吗?

【问题讨论】:

  • 您能否澄清一下:您想 (1) 清除并仅显示 1 页已更改的统计信息,还是 (2) 清除并仅显示您的程序的前 1 页的统计信息输出?
  • 如果可能的话,选项 1 会很棒,选项 2 也可以。

标签: python


【解决方案1】:

解决了这个问题:

import curses
window = curses.initscr()
window.addstr(1, 0, "my text")
window.refresh()
curses.endwin() 

【讨论】:

    【解决方案2】:

    它并没有真正回答你的问题,但是调用 os.system 来清除终端(除了在不同操作系统上运行的系统)并没有什么问题,在这种情况下你可以使用:

    os.system('cls' if os.name=='nt' else 'clear')

    【讨论】:

    • 应该使用子进程模块中的相应函数,而不是os.system。
    【解决方案3】:

    对于您可以使用的简单应用程序:

    print('\n' * number_of_lines)
    

    标准库中有curses模块。

    【讨论】:

    • 这显然有效,但是我不想通过写新行来清除屏幕,我想要的只是要更新的当前屏幕。和 linux 上的“top”命令一模一样,只是更新当前屏幕而不清除屏幕。
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多