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
編集:最高のコードではないことはわかっていますが、コンセプトを示したいだけです。
他のヒント
実際に<!> quot; import <!> quot;を意味する場合(<!> quot; read <!> quot;ではありません)、インポートモジュール定義をオーバーライドできます。タイミング機能を追加できます。
imp モジュールを参照してください。
<!> quot; read <!> quot;の場合、Pythonファイルを独自のファイルのようなラッパーで簡単にラップできます。ファイルはあまりにも多くのメソッドを公開しません。興味深いデータをオーバーライドして、タイミングデータを取得できます。
>>> class MyFile(file):
... def read(self,*args,**kw):
... # start timing
... result= super(MyFile,self).read(*args,**kw)
... # finish timing
... return result
所属していません StackOverflow