如何在Thonny Shell中清除当前行并实现同屏更新打印?
实现单行更新温度输出的方法
想在Thonny Shell里让循环中的温度信息在同一行更新,而不是每次打印新行,你可以用**回车符\r**让光标回到行首,覆盖原有内容,再配合输出刷新确保内容及时显示。下面是两种实用的实现方式:
方法1:修改print的end参数
把原来的print语句改成这样:
print(f'current temp= {cpu_temp} Min = {min_temp} Max = {max_temp} Temp Dif = {temp_dif}', end='\r')
end='\r':把print默认的换行符\n换成回车符,光标会回到当前行开头,下一次打印时就会覆盖之前的内容。- 用f-string格式化字符串,代码会更简洁好读。
如果遇到内容更新不及时的情况,加上强制刷新输出的操作就行:
import sys print(f'current temp= {cpu_temp} Min = {min_temp} Max = {max_temp} Temp Dif = {temp_dif}', end='\r') sys.stdout.flush()
这能保证输出立刻显示在Thonny Shell里,避免缓冲导致的延迟。
方法2:直接操作sys.stdout
另一种方式是直接调用标准输出的写入方法:
import sys sys.stdout.write(f'current temp= {cpu_temp} Min = {min_temp} Max = {max_temp} Temp Dif = {temp_dif}\r') sys.stdout.flush()
原理和方法1一样,只是直接通过stdout来控制输出行为。
注意事项
- 要确保每次输出的内容长度不短于上一次,不然会留下之前内容的残留字符。如果后续输出内容更短,可以在字符串末尾加足够的空格来覆盖旧内容。
- Thonny Shell完全支持
\r的行首定位功能,不用额外配置。
内容的提问来源于stack exchange,提问作者BobW
相关产品推荐
相关产品推荐

