如何在 python 中刷新标准输出

How to refresh an stdout in python

您好,在此先感谢您的帮助, 事实上,我有一个包含各种选项的进度条,我希望看到这些选项被刷新,而不是花时间清理控制台。

while True :
    #system("cls")
    sys.stdout.write("\rSearching for {} --- [Currently {} found] \nLoading [".format(entry, count_result) + "="*int(100 * count / nb_files) + " "*(100-int(100 * count / nb_files)) + "] {}%".format(int(round(float(int(100 * count / nb_files))))) + "\n")
    sys.stdout.flush()
    sleep(0.5)
    if int(100 * count / nb_files) == 100 :
        sleep(1)
        system("cls")
        break

所以我很想知道是否有办法,我到处寻找试图理解但我不明白我的情况如何做到这一点。提前致谢

“刷新”进度条的最简单方法是打印没有 LF (\n) 新符号的行。相反,你只是 CR (\r) 回车 return 符号。使用这种方法,光标将 return 到同一行并重写它

import sys
import time

for i in range(100):
    print("Progress: {}% ".format(i), end="\r")
    time.sleep(.1)

这种方法的主要缺点是它留下了上一行的符号。你可以通过这个例子看到它。

import sys
import time

for i in range(100):
    print("Progress: {}% ".format(i), end="\r")
    time.sleep(.5)
    print("short line", end="\r")
    time.sleep(.5)

所以,你也应该在写新行之前清理行

import sys
import time

for i in range(100):    
    print("                                                                     ", end="\r")
    print("Progress: {}% ".format(i), end="\r")
    time.sleep(.1)

这里有更多关于 CR 和 LF 符号的信息What are carriage return, linefeed, and form feed?