我使用的许多模块将整个文件导入内存,或者在处理文件时将文件内容涓细流。我想知道是否有任何方法可以跟踪这种加载进度?可能是一个接受回调的包装类?
我将通过确定文件的大小,然后简单地将总数除以读取的字节数来实现。这样地:
import os def show_progress(file_name, chunk_size=1024): fh = open(file_name, "r") total_size = os.path.getsize(file_name) total_read = 0 while True: chunk = fh.read(chunk_size) if not chunk: fh.close() break total_read += len(chunk) print "Progress: %s percent" % (total_read/total_size) yield chunk for chunk in show_progress("my_file.txt"): # Process the chunk pass
编辑: 我知道这不是最好的代码,但我只是想展示一下这个概念。
imp
如果你的意思是“读取”,那么你可以用自己的类文件包装器轻松地包装Python文件。文件不会暴露太多方法。您可以覆盖感兴趣的内容以获取计时数据。
>>> class MyFile(file): ... def read(self,*args,**kw): ... # start timing ... result= super(MyFile,self).read(*args,**kw) ... # finish timing ... return result