用Python中的进度指示器遍历大文件?

2024-05-23 15:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在迭代一个大型csv文件,我想打印一些进度指示器。据我所知,计算行数需要解析所有文件中的换行符。所以我不能轻易地用行号来估计进度。

还有什么我可以做的来估计阅读的进度吗?也许我可以按尺码去?


Tags: 文件csv指示器行号地用尺码
3条回答

您可以通过以下方式对大文件使用TQM:

import os
import tqdm

with tqdm.tqdm(os.path.getsize(filename)) as pbar:
   with open(filename, "rb") as f:
      for l in f:
          pbar.update(len(l))
          ...

如果你读了一个utf-8文件,那么len(l)不会给出确切的字节数,但是应该足够好。

您可以使用os.path.getsize(filename)获取目标文件的大小。然后,当您从文件中读取数据时,可以使用一个简单的公式计算进度百分比 currentBytesRead/filesize*100%。这个计算可以在每N行的末尾进行。

对于实际进度条,请查看Text Progress Bar in the Console

请检查这个名为tqdmhttps://github.com/noamraph/tqdm的小(有用)库 您只需包装一个迭代器,循环执行时就会显示很酷的进度表。

图片说明了一切。

enter image description here

相关问题 更多 >