代码之家  ›  专栏  ›  技术社区  ›  Corentin Binlard

Python-每次更新都会获得progressbar的新版本

  •  1
  • Corentin Binlard  · 技术社区  · 8 年前

    我对Python完全陌生,希望在将数据从一个数据库复制到另一个数据库(MongoDB)时显示进度条。我试图得到的是一个progressbar,显示数据库副本到另一个副本的推进(百分比)。副本运行良好,问题在于我的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_列表包含字符串。

    这段代码当然没有经过优化,也没有以正确的方式显示单个progressbar,但请耐心听我说。

    预期结果: Single progressbar on one line

    当前结果: One progressbar print for every iteration

    当前结果: tqdm

    提前感谢您的任何意见。

    1 回复  |  直到 8 年前
        1
  •  1
  •   George Kettleborough    8 年前

    进度条通过打印一个“\r”字符(回车)来工作,该字符将光标移回行首。只要光标停留在当前行上,这就可以工作。这里可能发生的事情是,您正在将换行打印到代码中其他地方的stderr。这本质上意味着回车无效。或者您使用的终端不支持回车(某些IDE)。