在Python中跟踪文件加载进度

问题描述:

我使用很多模块将整个文件导入到内存中,或者在文件处理过程中将文件内容传入。我想知道是否有任何方法来跟踪这种加载进度?可能是一个需要回调的包装类?在Python中跟踪文件加载进度

我会通过确定文件的大小,然后简单地将总数除以读取的字节数来完成此操作。就像这样:

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