Python中如何不换行输出进度并在原位置进行刷新显示?

import sys
num_batches = 20
for step in range(1,20):
    sys.stdout.write('processing: {} batch / {} batches.'.format(step + 1, num_batches)+ ' \r')
    sys.stdout.flush()

不过输出结果如下:似乎\r没有起到作用?这是为什么呢?

图片描述

阅读 9.4k
1 个回答

使用特殊的控制转移序列.

\x1B[1A 代表光标往上移动一行, \x1B[K 代表将当前光标至本行末尾的内容擦除掉, 组合起来相当于清除上一行的内容.

sys.stdout.write('\x1B[1A\x1B[Kprocessing: {} batch / {} batches.'.format(step + 1, num_batches)+ ' \r')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题