私はPythonを初めて使い、あるデータベースから別のデータベース(MongoDB)にデータをコピーする際にプログレスバーを表示したいと考えています。私が得ようとしているのは、データベースのコピーの進歩(パーセンテージ)を別のプログレスバーに表示する単一のプログレスバーです。コピーは正常に動作しています。問題はプログレスバーの更新内にあり、ループごとに再印刷されます。ここでPython - 毎回progressbarの新しい印刷を取得する
はスクリプトです:
coll_names = db_in.collection_names()
db_in_size = db_in.command('dbstats')['dataSize']
bar = progressbar.ProgressBar(max_value=db_in_size).start()
for X in X_list:
for coll in coll_names:
db_out_size = db_out.command('dbstats')['dataSize']
bar.update(db_out_size)
db_out[coll].delete_many({'X': X})
data_in = db_in[coll].find({'X': X})
if data_in.count() > 0:
db_out[coll].insert_many(data_in)
bar.finish()
X_listは文字列が含まれています。
このコードは、確かに最適化されていませんし、単一のプログレスバーを表示する正しい方法でフォーマットされていません。
期待される結果:Single progressbar on one line
現在の結果:One progressbar print for every iteration
現在の結果:あなたが持つかもしれない入力を事前にtqdm
感謝。
[tqdm](https://pypi.python.org/pypi/tqdm)をご覧ください。個人的に私は最高の進歩バーを見つける。それとは別に、ループ本体内の 'print()'呼び出しはすべてのプログレスバーライブラリを混乱させるでしょう。端末が制御記号をサポートしていない可能性もあります。 – Sergei
ありがとうございます。私は実際にtqdmを使用して同様の結果を得ようとしました。私は私のポストにそれを追加します。ターミナルが問題でした。 –