是否可以在 python 中更新一行已打印的文本?

Is it possible to update a line of already printed text in python?

我正在 Python 开发基于文本的操作系统,我想知道是否可以在同一行更新已打印的字符串。除了 this 没有真正回答我的问题之外,似乎没有其他内容。

我的想法是这样的:

Fri 13 May 6:00:34 PM

然后更新相同的文本:

Fri 13 May 6:00:35 PM

这是我当前代码的一部分:

def desktop():
    now = datetime.today()
    print(f"{now:%c}")
    help = input(bcolors.OKCYAN + '''
    /help for a list of commands
    ''')
    if help == '/help':
        #This goes to a function that shows a list of possible commands
        get_help()
    else:
        pass

这可能吗?如果有怎么办?

非常感谢,

捷运

简短的回答,没有。对于除了最后打印的行之外的任何其他内容使用打印函数来执行此操作,即使不是不可能,也是非常困难的,这里似乎就是这种情况。

但是,您可以查看 TUI(文本用户界面),例如 https://github.com/Textualize/textual or https://github.com/bczsalba/pytermgui

你可以看看this。基本上,您会覆盖上一行。我不确定这是否是您要找的。

您可以通过写出 '\b' 来擦除和重写,以有限的方式做到这一点。

import sys

def foo()
    sys.stdout.write('foo')
    sys.stdout.flush()
    sys.stdout.write('\b\b\b')
    sys.stdout.write('bar')
    sys.stdout.flush()

我正在 Mac 上的命令行上做类似的事情。到目前为止,只要我还没有写出换行符,这就一直有效。 (因此 sys.stdout.write 而不是 print。)