当我们需要处理大量的文件时,特别是在读取大文件时,会发现读取的过程异常耗时,无法反应出程序的实际运行状况。为了解决这个问题,我们可以使用进度条显示当前处理的进度,方便我们在终端直观地观察程序的进展。tqdm模块提供了一种简单易用的进度条显示方式,可以帮助我们更清晰地查看程序的运行情况,下面是使用tqdm模块实时显示文件读取进度的攻略。
安装tqdm模块
使用pip命令安装tqdm模块:
pip install tqdm
针对大文件的阅读进度条
当我们需要处理大文件时,最好采用以下示例中的方法,将文件划分成块以避免内存问题,同时实时显示进度条:
from tqdm import tqdm
chunk_size = 1024 * 1024
file_size = os.stat('/path/to/file').st_size
with open('/path/to/file', 'rb') as f:
with tqdm(total=file_size, unit='B',
unit_scale=True, desc='/path/to/file') as pbar:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
pbar.update(len(chunk))
首先,我们使用os模块中的stat函数获取文件大小。然后使用open函数打开文件,使用tqdm模块中的tqdm方法创建进度条,并指定单位为B,单位缩放为True,以及进度条的描述信息。然后我们不停的从文件中读取数据块,更新进度条,直到读完整个文件。
参数说明:
- total:进度条所需更新的总数,也就是文件大小;
- unit:进度条的计量单位,本例中为B,也可以指定为其他文件大小的计量单位,如MB或GB;
- unit_scale:进度条计量单位是否自动缩放,默认为False;
- desc:设定进度条的描述信息,默认为空;
- chunk_size:每次读取文件块的大小,此处我们定义为1024 * 1024,即1 MB。
针对小文件的阅读进度条
如果我们需要读取小文件,可以使用以下示例:
from tqdm import tqdm
import time
with open('/path/to/file') as fin:
for line in tqdm(fin, desc='/path/to/file', unit='line'):
# 对每一行数据进行处理
time.sleep(0.1)
在这个例子中,我们使用open函数打开文件,并使用tqdm函数创建进度条,并指定单位为line,以及进度条的描述信息。然后我们使用for循环,遍历每一行数据,并更新进度条。实际场景中,我们可以根据实际需要对每一行数据进行处理。
total参数不需要在这个例子中指定,系统会将行数自动计算。如果我们需要处理的是列表或者其他可迭代对象,可以将相应的对象作为参数传入tqdm函数中。
上述是使用tqdm模块处理文件阅读进度条显示的示例,能够有效提升代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用tqdm模块处理文件阅读进度条显示 - Python技术站