我是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
提前感谢你提出的任何意见。
答案 0 :(得分:1)
进度条通过打印" \ r"字符(回车),将光标移回行的开头。只要光标停留在当前行上,这就可以工作。这里可能发生的是你在代码中的其他地方向stderr打印换行符。这实质上意味着回车无效。或者您使用的终端不支持回车(显然有些IDE)。