【发布时间】:2017-12-05 10:00:16
【问题描述】:
我对 Python 完全陌生,希望在将数据从一个数据库复制到另一个数据库(MongoDB)时显示一个进度条。我想要得到的是一个显示数据库副本到另一个的进度(百分比)的进度条。副本工作得很好,问题在于我的进度条的更新,每个循环都会重新打印。
这是脚本:
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。我个人认为它是最好的进度条。除此之外,任何
print()在循环体中的调用都会使任何进度条库变得混乱。也有可能您的终端根本不支持控制符号。 -
谢谢。我实际上尝试使用具有类似结果的 tqdm。我会把它添加到我的帖子中。终端是问题所在。
标签: python progress-bar