Python 2.7 でプログレス バーを出力するために、次のコードを作成しました (コード レビューで確認) (PS: Python にプログレスバーモジュールがあることは知っています)
from __future__ import division
import sys
class Progress(object):
def __init__(self, maxval):
self._pct = 0
self.maxval = maxval
def update(self, value):
pct = int((value / self.maxval) * 100.0)
if self._pct != pct:
self._pct = pct
self.display()
def start(self):
self.update(0)
def finish(self):
self.update(self.maxval)
def display(self):
sys.stdout.write("|%-100s| %d%%" % ('#' *self._pct, self._pct) + '\n')
sys.stdout.flush()
# test
import time
toolbar_width = 300
pbar = Progress(toolbar_width)
pbar.start()
for i in xrange(toolbar_width):
time.sleep(0.1) # do real work here
pbar.update(i)
pbar.finish()
この進行状況バーを IDE (例: Pysripet、PyCharm など) とコマンド プロンプトで使用したいと考えています。コマンドプロンプトで実行すると、次の2つの問題があり、修正方法がわかりません。
- 最初に、プログレスバーに制限が出力されます(私は100秒を使用しました)
- 次に、プログレスバーはすべてのバーを次々に印刷します。ループ中に増加するバーを 1 つだけにしたい