1. ホーム
  2. python

[解決済み] 同じ行に印刷し、新しい行には印刷しない?

2022-11-29 06:15:12

質問

基本的にはこの人の逆のことをしたいのですが...えへへ。

Pythonスクリプトです。既存の行を更新するのではなく、毎回新しい行をシェルに出力する

どこまで進んでいるのかを教えてくれるプログラムがあります。

for i in some_list:
    #do a bunch of stuff.
    print i/len(some_list)*100," percent complete"

つまり、もしlen(some_list)が50だったら、最後の行を50回繰り返し印刷することになります。私は1行を印刷し、その行を更新し続けたいのです。これはおそらくあなたが一日中読むことになる最もつまらない質問であることは分かっています。ただ、答えを得るためにgoogleに入れる必要がある4つの単語がわからないのです。

更新しました。mvds の提案を試したところ、正しいように思えました。新しいコード

print percent_complete,"           \r",

Percent completeは単なる文字列です(最初の頃は抽象化していましたが、今は文字通りにしようと思っています)。その結果、プログラムを実行し、プログラムが終了するまで何も表示せず、1 行だけに "100 percent complete" を表示するようになりました。

キャリッジリターンがない場合 (ただし mvds の提案の半分であるカンマはある)、最後まで何も表示されません。そして、印刷します。

0 percent complete     2 percent complete     3 percent complete     4 percent complete    

といった具合です。それで今新たな問題は、カンマがあるとプログラムが終了するまで印刷されないということです。

キャリッジ リターンとカンマがない場合は、どちらもない場合とまったく同じ動作になります。

どのように解決するのですか?

キャリッジリターンと呼ばれる \r

を使用します。

print i/len(some_list)*100," percent complete         \r",

カンマは、printが改行を追加するのを防ぎます。(そして、スペースは前の出力から行をクリアに保ちます)

また、終端には忘れずに print "" で終了させ、少なくとも最終的な改行を取得することも忘れないでください!