5

重複の可能性:
Pythonプログレスバー

forループを10,000回実行していますが、ループ内では多くの計算が行われています。進行状況メッセージをコンソールに出力して、ループのどこまでプログラムがどれだけ長く待たなければならないかを知らせたいと思います。

基本的なループは

n = 10000 
for i in range(n):
   do_stuff_method()
   if(i%100 == 0):
      print (float(i)/n)*100,

これは同じ行にパーセンテージメッセージを印刷しますが、問題は、次に印刷するものも同じ画面に印刷されることです。それと、99個のプリノウトがあるので、コンソールはかなり広くなり、スクロールがたくさんあります。

私が本当に望んでいるのは、コンソールが現在の完了率を印刷し、1行で終了するまでの推定時間が以前に印刷されたものを置き換えることです。したがって、多くのスクロールを行う必要はありません。

これはできますか?

乾杯、デイビー

4

1 に答える 1

8

あなたの場合、あなたは単にあなたの印刷行を次のように変えることによってそれをすることができます:

print "\r{0}".format((float(i)/n)*100),

または、印刷する代わりに次のように試すことができます。

sys.stdout.write("\r{0}".format((float(i)/n)*100))
sys.stdout.flush()
于 2012-07-25T15:01:17.950 に答える