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