代码之家  ›  专栏  ›  技术社区  ›  Soviut

在Python中跟踪文件加载进度

  •  3
  • Soviut  · 技术社区  · 17 年前

    我使用的许多模块将整个文件导入内存,或者在处理文件时将文件内容涓细流。我想知道是否有任何方法可以跟踪这种加载进度?可能是一个接受回调的包装类?

    2 回复  |  直到 17 年前
        1
  •  7
  •   Soviut    9 年前

    我将通过确定文件的大小,然后简单地将总数除以读取的字节数来实现。这样地:

    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 
    

    编辑: 我知道这不是最好的代码,但我只是想展示一下这个概念。

        2
  •  3
  •   S.Lott    17 年前

    imp

    如果你的意思是“读取”,那么你可以用自己的类文件包装器轻松地包装Python文件。文件不会暴露太多方法。您可以覆盖感兴趣的内容以获取计时数据。

    >>> class MyFile(file):
    ...     def read(self,*args,**kw):
    ...         # start timing
    ...         result= super(MyFile,self).read(*args,**kw)
    ...         # finish timing
    ...         return result
    
    推荐文章