gpt4 book ai didi

ruby - 使用 ruby​​ 在命令提示符下覆盖之前的输出行

转载 作者:数据小太阳 更新时间:2023-10-29 06:30:42 25 4
gpt4 key购买 nike

我已经运行了输出一行的命令行程序,然后稍后更新该行。但是对于 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 以确保立即打印文本。

关于ruby - 使用 ruby​​ 在命令提示符下覆盖之前的输出行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com