私はコマンドラインプログラムを実行して、その行を出力してから、その行を一瞬後に更新しました。しかし、ルビーでは、私は行を出力してから別の行を出力するように見えます。コマンドプロンプトで先に出力された行をrubyで書き出す
Downloading file:
11MB 294K/s
12MB 307K/s
14MB 294K/s
15MB 301K/s
16MB 300K/s
Done!
、代わりに、私はこれを見たい:
Downloading file:
16MB 300K/s
Done!
行を:
Downloading file:
11MB 294K/s
は一瞬、この後に続くが、私は今、出力されている何
ダウンロードされたファイルサイズと転送速度がリストの代わりに毎回上書きされることを示す私のルビースクリプトの出力更新された値をまったく新しい行にします。
私は現在、出力を生成するためにputs
を使用していますが、これは明らかにこのケース用に設計されていません。この結果を達成する別の出力方法はありますか?
この解決策は、改行が出力されるか、プログラムが終了するまで出力を表示しません。この例は、例えば 'print '123'; sleep 5; "\ r"を印刷します。 print "456"は最初に何も印刷せず、5秒後に "456"を出力します。だから、それは私を助けてくれません。 –
'STDOUT.flush'を追加してすぐに出力に送ります。私も答えを更新しました。 – detunized
ああ、意味があります。それは固定されており、今は素晴らしい仕事です、ありがとう! –