Python中print设置end参数为\r(回车符)无输出问题咨询
问题根因
这个现象是PyCharm内置控制台的默认缓冲机制导致的:PyCharm默认对输出内容做行缓冲,只有遇到换行符\n、缓冲区满、或程序运行结束时才会把缓存的内容打印出来。你使用end="\r"的时候没有触发缓冲刷新的条件,所以内容一直暂存在缓冲区里无法显示,而系统终端默认的缓冲策略不会出现这个问题,所以直接在终端运行是正常的。
解决方案
下面三个方案都可以解决问题,同时保留单行刷新倒计时的效果:
- 方案1(最简便,优先推荐):给print函数添加
flush=True参数,主动强制刷新输出缓冲区
把原来的print行修改为:print(timer, end="\r", flush=True)
这个改法不需要修改PyCharm任何配置,同时兼容系统终端的运行效果。 - 方案2:修改PyCharm运行配置,模拟终端输出
- 点击PyCharm右上角运行按钮旁的配置下拉框,选择「编辑配置」
- 找到对应倒计时脚本的运行配置,勾选「模拟输出终端」选项
- 保存配置后重新运行脚本即可正常显示
- 方案3:手动调用标准输出刷新方法
导入sys模块后,在print语句后添加刷新代码:import sys # ... 其他代码不变 print(timer, end="\r") sys.stdout.flush() # ... 其他代码不变
内容的提问来源于stack exchange,提问作者MegaKarg
相关产品推荐
相关产品推荐

