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')
推荐问题