使用 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/