使用ruby在命令提示符中写入以前的输出行
我运行输出一行的命令行程序,然后稍后更新该行。 但是对于ruby,我似乎只能输出一行,然后是另一行。
我现在输出的是什么:
Downloading file: 11MB 294K/s 12MB 307K/s 14MB 294K/s 15MB 301K/s 16MB 300K/s Done!
相反,我想看到这个:
Downloading file: 11MB 294K/s
过了一会儿:
Downloading file: 16MB 300K/s Done!
我的ruby脚本输出的行显示下载的文件大小和传输速度每次都会被覆盖,而不是将更新的值列为整个新行。
我目前正在使用puts
来生成输出,这显然不是针对这种情况设计的。 是否有不同的输出方法可以实现这一结果?
使用\r
将光标移动到行的开头。 并且您不应该使用puts
因为它添加\n
,使用print
而不是。 像这样:
print "11MB 294K/s" print "\r" print "12MB 307K/s"
但要注意的一件事是: \r
不删除任何内容,它只是将光标向后移动,因此您需要用空格填充输出以覆盖先前的输出(如果它更长)。
默认情况下,当\n
打印到标准输出时,刷新缓冲区。 现在您可能需要在print
后使用STDOUT.flush
以确保文本立即打印。