1. ホーム
  2. python

[解決済み] 改行までのtqdm印刷

2022-02-19 20:34:36

質問内容

私はpythonで小さなコマンドラインゲームを作っていて、tqdmモジュールを使ってプログレスバーを表示しているところです。私は進行を中断するために、msvcrtモジュールを使用してユーザー入力をリッスンします。一旦中断されると、ユーザはコマンドラインプロンプトに'restart'を入力することで再開することができます。2回目にプログレスバーを表示すると、同じ行を更新するのではなく、毎回新しい行が作成されます。

どうすれば同じ行に進捗状況を表示させることができるでしょうか?

このコードでは、プログレスバーの使い方を説明します。

def transfer():
    for i in tqdm.tqdm(range(1000), desc="Transfer progress", ncols=100, bar_format='{l_bar}{bar}|'):
        sleep(.1)
        if msvcrt.kbhit():
            if msvcrt.getwche() == ' ':
                interrupt()
                break

def interrupt():
    type("File transfer interrupted, to restart the transfer, type 'restart'")

解決方法は?

で試してみてください。 position=0leave=True

(での解決策)。 グーグル・コラボ を使用すると、改行されるのを防ぐことができます)

from tqdm import tqdm 
import time

def foo_():
    time.sleep(0.3)
range_ = range(0, 10)
total = len(range_)

with tqdm(total=total, position=0, leave=True) as pbar:
   for i in tqdm((foo_, range_ ), position=0, leave=True):
    pbar.update()