gpt4 book ai didi

python - 如何在控制台的最后一行和倒数第二行之间打印?

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:33 25 4
gpt4 key购买 nike

使用 Python 3.4,在最后一行和倒数第二行之间是否有一种与平台无关的打印方法?我想要完成的基本上是一个始终位于最后一行的进度条。第二行及以上只是调试日志。例如:

[DEBUG] Some info...
[DEBUG] More info...
Download Progress: [#### ] 40% (3 of 20)

我循环运行一些下载。循环的每次迭代我都运行它来打印进度条:

def _print_progress_bar(self):
amt_done = self._count / self._max
print('\rDownload Progress: [{:20s}] {:.1f}% ({})'.format(
'#' * int(amt_done * 20),
amt_done * 100,
self._padded_counter(' of ')), end='')

在调用此方法以呈现进度条之间,我想在其上方插入诊断消息(基本上我不希望此后的 print 语句覆盖进度条)。

我该怎么做?

最佳答案

您可以通过使用回车符'\r' 来获得此效果。在 Windows 上,这是与换行符 ('\n') 组合以创建新行的字符。在 Unix 系统上,纯换行会自动返回回车,但 '\r' 仍然是一个有效字符。例如,print('hi\rhello') 将打印 'hi',回到行首,打印 'hello',所以只有 'hello' 最终会实际显示。您可以使用 end='' 来抑制 print() 的新行。以下函数演示了该做什么 - 我建议运行它以查看您自己会发生什么,因为输出当然是动态的。

>>> import time, sys
>>> def doit():
... print('part 1')
... print(0, end='')
... sys.stdout.flush()
... time.sleep(1)
... print('\rpart 2')
... print(1)
...
>>> doit()
part 1
part 2
1

关于python - 如何在控制台的最后一行和倒数第二行之间打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30363094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com