Python tqdm 处理大文件读取无进度条问题的解决方案
本文分析 Python 中使用 tqdm 模块处理大文件读取时进度条不显示的原因,指出因文件迭代器无法提供总长度导致的问题。通过预计算文件行数的方法,将结果赋值给 tqdm 的 total 参数,成功实现大文件读取进度的实时监控与显示。
问题提出
近期在使用 tqdm 模块监控大文件读取进度时,遇到一个现象:即便 tqdm 的使用代码逻辑正确,进度条却始终无法打印显示。
具体表现如下:

如上图所示,直接对文件进行 read 操作时,界面上没有进度条显示。
问题解决
下面先分析原因,再给出解决方案。
为什么没有进度条
tqdm 模块显示进度条的前提是已知可迭代对象的总迭代次数。例如,当迭代一个 list 时,由于 list 支持 len() 方法获取长度,tqdm 便能正确计算并显示进度条。
然而,文件读取(read file)的迭代逻辑与此不同。文件迭代器每次读取以换行符(\n)结尾的一行内容,直到没有换行符时迭代结束。因此,文件迭代器无法自动提供 len() 方法来获取总迭代次数,导致 tqdm 无法确定总进度。
如何解决
解决方法是预先获取文件的总行数。虽然看似没有捷径,但可以通过以下代码高效实现:
num_file = sum([1 for i in open("your-file-path.txt", "r")])
获取到总行数 num_file 后,将其传递给 tqdm,并赋值给 total 参数即可。
具体效果如图

以上就是 Python 使用 tqdm 模块处理文件读取进度条显示的详细内容,更多关于 Python tqdm 阅读进度条的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













