Mar*_*ith 7 scroll python-2.7 python-3.x output
我有一个实时接收值的 python 脚本。我的脚本在接收到值时打印值,当前,每个更新都打印到屏幕上,输出向下滚动,例如
Update 1
Update 2
Update 3
...
Run Code Online (Sandbox Code Playgroud)
是否可以让每个新值覆盖输出屏幕上的先前值,以便这些值不滚动?例如
Update 1
Run Code Online (Sandbox Code Playgroud)
当收到更新 2 时,打印语句会将输出屏幕更新为:
Update 2
Run Code Online (Sandbox Code Playgroud)
等等...
在此先感谢您的指点。
ele*_*han 10
你可以传递end='\r'给print()函数。'\r'表示Python 中的回车。以 Python 3 为例:
import time
for i in range(10):
print('Update %d' % i, end='\r')
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)
这里time.sleep(5)只是用来强制打印之间的延迟。否则,即使所有内容都被打印然后被覆盖,它也会发生得如此之快,以至于您只能看到最终值'Update 9'。在您的代码中,听起来有些进程正在运行时time.sleep()会出现自然延迟,因此不需要使用。
在python 2.7中,print函数不允许有end参数,print 'Update %d\r'也会打印换行符。
这是@elethan 为 python2.7 提供的相同示例。注意它使用sys.stdout输出流:
import sys
import time
output_stream = sys.stdout
for i in xrange(10):
output_stream.write('Update %s\r' % i)
output_stream.flush()
time.sleep(5)
# Optionally add a newline if you want to keep the last update.
output_stream.write('\n')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8083 次 |
| 最近记录: |