我有一个用Python编写的程序,它广泛使用换行符以产生更新控制台行的效果(特别是进度条)。在尝试在PyCharm中调试代码时,我发现进度条直到完成后才会被打印出来。
经过进一步检查,发现当打印回车符(
示例代码:
经过进一步检查,发现当打印回车符(
\r
)时,整行都被删除了。因为库本身写入的字符串形式为({line}\r
),所以我总是得到一个空行。示例代码:
import sys
sys.stdout.write('xxx')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('\rZZ')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('yyy\r')
sys.stdout.flush()
time.sleep(1)
print ('===')
我的运行结果如下:
- 打印出
xxx
[1秒后] - 打印出
ZZ
[1秒后] - 删除该行
[1秒后] - 打印出
===
并结束程序
无论在调试或运行控制台中运行此脚本时都会发生这种情况。